코틀린의 엘비스 연산자(Elvis Operation)를 소개합니다.
엘비스 연산자는 ?:
로 표현하며, ?:
의 왼쪽 객체가 non-null이면 그 객체의 값이 리턴되고, null이라면 ?:
의 오른쪽 값을 리턴합니다.
먼저 if-else로 구현한 예제 코드를 보고, 이 코드를 엘비스 연산자를 이용하여 다시 구현하면서 어떻게 동작하는지 확인하겠습니다.
if-else
아래 예제는 if-else
를 사용하여 문자열의 길이를 구하는 코드입니다.
String이 null이면 -1을 len에 할당하고, non-null이면 length를 len에 할당하는 코드입니다.
fun main(args: Array<String>){
val str: String? = "1234"
val nullStr: String? = null
var len: Int = if (str != null) str.length else -1
println("str.length: $len")
len = if (nullStr != null) nullStr.length else -1
println("nullStr.length: $len")
}
Output:
str.length: 4
nullStr.length: -1
이 코드를 엘비스 연산자를 이용하여 다시 구현하겠습니다.
Elvis Operation
str?.length ?: -1
는 엘비스 연산자 왼쪽의 str?.length
객체가 null이 아니면 그 값을 리턴하고, null이면 -1을 리턴합니다.
?.
는 Safe call이라고 부르는 것인데,str?.length
는 str 객체가 null일 때 null을 리턴하고, null이 아닐 때는str.length
를 리턴합니다.
fun main(args: Array<String>){
val str: String? = "1234"
val nullStr: String? = null
var len: Int = str?.length ?: -1
println("str.length: $len")
len = nullStr?.length ?: -1
println("nullStr.length: $len")
}
Output:
str.length: 4
nullStr.length: -1
null 리턴 예제
메소드에서 null을 리턴하도록 만들 수도 있습니다.
fun foo(node: Node): String? {
val parent = node.getParent() ?: return null
}
Throw Exception 예제
Exception이 발생되도록 구현할 수도 있습니다.
fun foo(node: Node): String? {
val name = node.getName() ?: throw IllegalArgumentException("name expected")
}
References
Loading script...
Related Posts
- Kotlin - 배열에서 최소 값, 최대 값 찾기
- Kotlin - 2차원 배열 선언, 초기화 방법
- Kotlin - 배열 선언, 초기화 방법
- Kotlin - 리스트, 배열 길이 가져오기
- Kotlin - 리스트에서 최대, 최소 값 찾기
- Kotlin - for 반복문, 배열/리스트 순회
- Kotlin - Timer, 주기적으로 함수 실행
- Kotlin - sleep, 쓰레드 몇 초 지연
- Kotlin - Thread 생성 및 실행
- Kotlin에서 정규표현식 사용하기
- Kotlin - 문자열 길이 계산
- Kotlin - 문자열 비교 방법(equals, ==, compareTo)
- Kotlin - 2개의 배열 하나로 합치기
- Kotlin - 2개의 List 하나로 합치기
- Kotlin - 디렉토리의 모든 파일 리스트 출력
- Kotlin - 리스트 정렬 방법 (sort, sortBy, sortWith)
- Kotlin - 문자열 뒤집기 (Reverse String)
- Kotlin - 랜덤 숫자 생성 (Random, SecureRandom)
- Kotlin - Range, 숫자 범위 표현
- Kotlin - 음수를 양수로 변환, math.abs()
- Kotlin - List를 Set로 변환
- Kotlin - Set를 List로 변환
- Kotlin - 문자열에서 숫자(int)만 추출하는 방법
- Kotlin - Map을 List로 변환하는 방법
- Kotlin - File, Directory가 존재하는지 확인
- Kotlin - List를 Map으로 변환
- Kotlin - List의 중복 요소 제거
- Kotlin - List를 Array로 변환
- Kotlin - 엘비스 연산자 (Elvis Operation)
- Kotlin - Array를 List로 변환
- Kotlin - String을 Float으로 변환
- Kotlin - String을 Double으로 변환
- Kotlin - String을 Int로 변환
- Kotlin - String을 Long으로 변환
- Kotlin - String Null 또는 Empty 체크