티스토리 뷰
Safe Call
null
이 아니면 실행하고, null
이면 실행하지 않는다.(그대로 null)
str 변수에 "ABC"를 대입했지만, 실제로는 null
이 들어갈 수도 있는 변수이기 때문에 str.length처럼 .
으로 바로 호출할 수 없다. 이때 ?.(Safe Call)
을 사용하면 호출이 가능해진다.
?.
의 의미는 앞에 있는 변수가 null
이 아니면 뒤의 함수나 프로퍼티 등을 실행시키고, null
이면 값 그대로 null
이 된다.
실제로 null이 들어갈 수 있는 변수를 ?.
를 사용하지 않고, 실행해보면 Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
메시지가 출력된다.
Elvis 연산자
앞의 연산 결과가 null
이면 ?:
뒤의 값을 사용한다.
str 변수에 "ABC"가 대입되어 있으므로 3이 되겠지만, null
이면 앞의 연산 결과가 null
이 되기 때문에 결과는 0이 된다.
아래는 Elvis 연산자를 사용해서 null
이면 예외를 던지고 null
이 아니면 값을 반환하도록 선언한 메서드이다.
fun startsWith(str: String?): Boolean {
return str?.startsWith("A") ?: throw IllegalArgumentException("null 예외")
}
main
함수를 통해 startsWith
메서드를 호출하면 예상한대로 결과가 잘 나오는 것을 확인할 수 있다.
fun main() {
val str: String? = null
println(startsWith(str))
}
'Kotlin' 카테고리의 다른 글
[Kotlin] 클래스 (0) | 2022.06.17 |
---|---|
[Kotlin] object 키워드 (0) | 2022.06.14 |
[Kotlin] 접근 제한자(Visibility Modifier) (0) | 2022.06.07 |
[Kotlin] 예외를 처리하는 방법 (0) | 2022.06.02 |
[Kotlin] 반복문 (0) | 2022.06.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 문자열
- 인프런
- leetcode
- webflux
- 스프링 부트
- 자료구조
- Spring
- 데이터베이스
- 스프링
- 그리디
- spring boot
- 파이썬
- 정렬
- 리팩토링
- mysql 8.0
- 알고리즘
- Algorithm
- 구현
- 노마드
- 북클럽
- MySQL
- 백준
- 스프링부트
- 노마드코더
- 코테
- 코틀린
- 김영한
- kotlin
- Real MySQL
- 릿코드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함