-
[Android] 코틀린 엘비스 연산자(?:)의 잘못된 사용법안드로이드/트러블 슈팅 2024. 1. 8. 23:13
프로젝트를 하던 중 다음과 같은 코드를 작성했다
find() 메서드를 활용해 리스트에서 원하는 값을 가져오고 null 일경우 뒤에 작성 된 람다식이 실행되기를 바라고 작성한 코드였다. 하지만 예상과 달리 null 일 경우 엘비스 연산자 다음에 오는 코드는 실행되지 않았다.
그 이유는 다음과 같았다.
https://kotlinlang.org/docs/null-safety.html#elvis-operator 코틀린 공식 문서에서 엘비스 연산자에 대해 설명된 글이다.
위의 설명에서 핵심만 말하자면 엘비스 연산자는 "반환"값이 있을 때 사용하는 연산자이다.
그로인해 내가 작성했던 코드에서는 뒤에 따르는
?: {binding.tvAmPm.text = binding ...
코드는 중괄호 안의 코드를 실행시키는 것이 아니라 해당 중괄호인 람다식을 "반환"한 것이었다.
그래서 위와 같은 형식을 사용하면서 뒤에 따르는 람다식을 즉시 실행시키기 위해서는 다음과 같은 코드를 작성해줘야 한다.
~ ?: run {~}
'안드로이드 > 트러블 슈팅' 카테고리의 다른 글
[Android][View] view의 리스너는 해당 동작으로 발생하는 상태변화 이후에 실행된다. (0) 2022.11.29 [android][style,theme] theme.xml 에서 style 만들어도 적용 안될때 (0) 2022.11.24 [Android][Firestore] Firestore 호출 응답 기다리기 (0) 2022.11.23