본문

코틀린(Kotlin) 기본 문법 - 4

도입

지난번 포스팅에서 언급한 것처럼 코틀린의 특징 중 하나는 널 안전성이다. 그래서 자바와 다르게 코틀린에서는 널 안전성을 위해 다양한 기능을 제공한다. 

그래서 이번 포스팅에서는 코틀린의 기본 문법 중 널 안전성(NULL Safety)과 관련된 문법을 살펴볼 예정이다.



기본 문법(널 안전성)

1. "?:" 키워드

변수의 값이 NULL 인지 확인 후 NULL이면 설정 값을 반환한다.

1
2
3
4
//  ?: 예제
fun keywordElvisColon(input: String?) {
    Log.e("heepie""Input: $input, Result: ${input ?: "NULL"}")
}
cs


2. "?." 키워드

변수의 값이 NULL 인지 확인 후 NULL이 아니면 값을 대입하거나 뒤의 연산 실행

1
2
3
4
//  ?. 예제
fun keywordElvisPoint(input: String?) {
    Log.e("heepie""Input: $input, Result: ${input?.substring(2)}")
}
cs


3. "as?" 키워드

자료형 변환이 실패할 경우, 예외 대신 NULL 반환한다. 그래서 값을 통해 반환 결과를 바로 알 수 있다.

1
2
3
4
//  as? 예제
fun keywordAsElvis(input: String?) {
    Log.e("heepie""Input: $input, Result: ${input as? Int}")
}
cs


4. "!!" 키워드

NULL 값이 들어갈 수 있는 변수에 NULL이 아니라는 것을 보증하기 위해 사용, 즉 "!!" 키워드를 통해 해당 변수는 NULL이 아니라는 것을 보증

※ 만약 NULL이 들어가면 예외 발생

1
2
3
4
5
6
7
8
//  !! 예제
fun keywordPPoint(isPeople: Boolean, input: String?) {
    // input이 NULL일 수도 있으므로 실행 불가능, 컴파일 오류 발생
    // input.substring(3)
 
    // input이 NULL이 아니라는 것을 보장해 컴파일 가능
    input!!.substring(3)
}
cs


5. "lateinit" 키워드

키워드를 해석해 보면 "나중에 초기화 한다"는 것이다. 해석처럼 변수를 설정하고 초기화는 나중에 할 경우 사용한다. 

예를 들어 데이터 바인딩 기술을 사용할 경우, 바인딩 변수는 설정해 놓고 나중에 초기화 할 수 있다.

1
2
3
4
5
6
7
//  lateinit 예제
lateinit var variable: String
fun keywordLateinit() {
    Log.e("heepie""lateinit var NOT init " + variable)
    variable = "Good Day"
    Log.e("heepie""lateinit var init " + variable)
}
cs



#코틀린 #kotlin

공유

댓글