결과가 없는 함수는 오류를 발생시키지 않으며, 아무 문제가 없다.
단지 값이 없을 뿐.
자바에서는 null이라는 값이 결과가 되도록 허용했으며,
이를 정상적인 값과 동일하게 다룰 경우 가끔 'NullPointException'이 발생하기도 했다.
이 때문에 많은 실패를 보았지만, null을 허용하지 않음으로서 이를 방지할 수 있다.
오늘 학습할 아톰은 코틀린에서의 널이 될 수 있는 타입이다.
[ 코틀린에서 null이 될 수 있는 타입 ]
null이 될 수 있는 타입
: 코틀린에서의 모든 기본 타입은 null이 될 수 없음
: 타입 이름 뒤에 물음표(?)를 통해 null 가능 타입이 될 수 있음
: null 가능 타입은 기본 타입에 대입이 불가능
: null 가능 타입과 기본 타입은 서로 다른 타입
: 역참조(즉, 멤버 프로퍼니타 멤버 함수에 접근)가 불가능하며, if를 통해 null이 아님을 검사한 후에는 참조를 허용
* 역참조와 관련해서는 다음 아톰에서 설명 예정
import atomictest.eq
fun main() {
// null 가능, 불가능 관련 예제
val s1 ="abc"
// val s2: String = null
val s3: String? =null
val s4: String? = s1
// val s5: String = s4 // null이 될 가능성이 있기 때문에 기본 타입에 대입 불가
val s6 = s4 // 타입 추론으로 null 가능 타입으로 추론됨
s1 eq "abc"
s3 eq null
s4 eq "abc"
s6 eq "abc"
}
[ 오늘의 학습 소감 ]
오늘 학습한 아톰은 크게는 하나의 내용을 이야기 하고 있다. 제목과 동일하게 '코틀린에서는 null을 허용할 수 있으며, 허용하지 않을수도 있다.' 였다. 코틀린에서는 타입에 물음표를 붙임으로서 null을 허용하고, 해당 타입의 경우 null이 아님을 보장받지 못하면 참조 또한 할 수 없다는 이야기였다. 물론 끝이 역참조에 대해서는 다음 아톰에서 설명하기 때문에 다음 아톰까지 계속 이어지는 이야기겠지만, 과연 이 역참조에 대해서는 코틀린이 어떻게 대처를 해놓았을지 궁금증이 커지는 아톰이었다.
'공부 자료 > 코틀린[Kotlin]' 카테고리의 다른 글
| [Atomic 39] 널 아님 단언 (0) | 2024.02.20 |
|---|---|
| [Atomic 38] 안전한 호출과 엘비스 연산자 (0) | 2024.02.13 |
| [Atomic 36] 구조 분해 선언 (1) | 2024.02.08 |
| [Atomic 35 ] 데이터 클래스 (feat. data class 클래스명) (0) | 2024.02.07 |
| [Atomic 34] 이넘(feat. Enum) (0) | 2024.02.06 |