kotlin
-
[Android] 코틀린 엘비스 연산자(?:)의 잘못된 사용법안드로이드/트러블 슈팅 2024. 1. 8. 23:13
프로젝트를 하던 중 다음과 같은 코드를 작성했다 find() 메서드를 활용해 리스트에서 원하는 값을 가져오고 null 일경우 뒤에 작성 된 람다식이 실행되기를 바라고 작성한 코드였다. 하지만 예상과 달리 null 일 경우 엘비스 연산자 다음에 오는 코드는 실행되지 않았다. 그 이유는 다음과 같았다. 코틀린 공식 문서에서 엘비스 연산자에 대해 설명된 글이다. 위의 설명에서 핵심만 말하자면 엘비스 연산자는 "반환"값이 있을 때 사용하는 연산자이다. 그로인해 내가 작성했던 코드에서는 뒤에 따르는 ?: {binding.tvAmPm.text = binding ... 코드는 중괄호 안의 코드를 실행시키는 것이 아니라 해당 중괄호인 람다식을 "반환"한 것이었다. 그래서 위와 같은 형식을 사용하면서 뒤에 따르는 람다식..
-
[TiL]2023년 5월 3일TiD 2023. 5. 3. 01:46
#Kotlin inner, nested Class (RecyclerView 에서 Adapter와 ViewHolder) 리사이클러뷰 adapter를 사용하려다가 과거에는 viewholder를 항상 어뎁터의 inner 클래스로 작성했었는데 코드리뷰에서 항상 inner로 사용하지 말라는 조언을 듣기도 했고 메모리누수가 발생한다는 사실을 알고 있었지만 제대로 알지 못 했고 항상 그냥 inner 클래스로 사용했기에 알아봤다. (자바는 기본적으로 inner 코틀린은 nested다.) 어떤 클래스의 inner클래스를 작성하고 사용하게 되면 항상 묵시적으로 외부 클래스의 변수들을 참조하게 된다. (그래서 생성자에 없어도 그냥 사용할 수 있다.) 그렇게 되면 사용하지 않는 데이터들도 드러나지 않게 계속 갖고있기 때문에 ..