[Android] 3(8). 코틀린 기본 문법(Null Safety)
Null Safety
코틀린은 null 값의 처리에 많은 공을 들인 언어입니다. null은 프로그램 전체, 혹은 앱 전체를 멈출 수도 있기 때문에 아주 중요한 이슈입니다.
null로 인한 프로그램 다운 상황을 방지하기 위한 것이 Null Safety입니다.
null 값 허용하기: ?
코틀린에서 지정하는 기본 변수는 모두 null이 입력되지 않습니다. null을 입력하기 위해서는 변수를 선언할 때 타입 뒤에 ’?’ (Nullable, 물음표)를 입력해야 합니다.
변수에 null 허용 설정하기
var variable: String?
함수 파라미터에 null 허용 설정하기
안드로이드의 onCreate() 메서드의 Bundle 파라미터처럼 함수의 파라미터에도 null 허용 여부를 설정할 수 있습니다.
함수의 파라미터가 null을 허용한다면 해당 파라미터에 대해서 반드시 null 체크를 먼저 해야만 사용할 수 있습니다.
fun nullParameter(str: String?){
if (str != null){ // null 체크를 먼저 해야합니다.
var length2 = str.length
}
}
함수의 리턴 타입에 null 허용 설정하기
함수의 리턴 타입에도 물음표를 붙여서 null 허용 여부를 설정할 수 있습니다.
fun nullReturn(): String?{
return null
}
안전한 호출: ?.
Nullable인 변수 다음에 ’?.’(Safe Call, 물음표와 온점)을 사용하면 해당 변수가 null일 경우 ?. 다음의 메서드나 프로퍼티를 호출하지 않습니다.
👍 예시
fun testSafeCall(str: String?):Int?{
// str이 null이면 length를 체크하지 않고 null을 반환합니다.
var resultNull: Int? = str?.length
return resultNull
}
만약 Safe Call을 사용하지 않았는데 str 변수가 null이라면 프로그램은 다움됩니다.
Null 값 대체하기: ?:
’?:’ (Elvis Operator, 물음표와 콜론) 을 사용하면 원본 변수가 null일 때 넘겨줄 기본 값을 설정할 수 있습니다.
👍 예시
fun testElvis(str: String?): Int{
// length 오른쪽에 ?:을 사용하면 null일 경우 ?: 오른쪽의 값이 반환됩니다.
var resultNonNull: Int = str?.length?:0
}
str 변수가 null일 경우 ?: 오른쪽의 0을 반환합니다.
정리
- 코틀린의 Null Safety 문법에는 Nullable(?), Safe Call(?.), Elvis operator(?:)가 있습니다.
- Nullable
- null을 입력받기 위해 사용합니다.
- 사용 예: var nullable: 타입?
- Safe Call
- null일 때 ?. 다음에 나오는 속성이나 명령어를 처리하지 않습니다.
- 사용 예: var result = 변수?.length 또는 변수?.프로퍼티?.something
- Elvis Operator
- null일 때 ?: 오른쪽의 값을 기본값으로 사용
- 사용 예: var result = 변수?:0 또는 변수?.프로퍼티?:0
Leave a comment