코틀린
-
[Android] 코틀린 엘비스 연산자(?:)의 잘못된 사용법안드로이드/트러블 슈팅 2024. 1. 8. 23:13
프로젝트를 하던 중 다음과 같은 코드를 작성했다 find() 메서드를 활용해 리스트에서 원하는 값을 가져오고 null 일경우 뒤에 작성 된 람다식이 실행되기를 바라고 작성한 코드였다. 하지만 예상과 달리 null 일 경우 엘비스 연산자 다음에 오는 코드는 실행되지 않았다. 그 이유는 다음과 같았다. 코틀린 공식 문서에서 엘비스 연산자에 대해 설명된 글이다. 위의 설명에서 핵심만 말하자면 엘비스 연산자는 "반환"값이 있을 때 사용하는 연산자이다. 그로인해 내가 작성했던 코드에서는 뒤에 따르는 ?: {binding.tvAmPm.text = binding ... 코드는 중괄호 안의 코드를 실행시키는 것이 아니라 해당 중괄호인 람다식을 "반환"한 것이었다. 그래서 위와 같은 형식을 사용하면서 뒤에 따르는 람다식..
-
room과 retrofit을 사용하며 하나의 mapper를 사용하고 싶을 때프로젝트 기록/내날씨(OwnWeather) 2023. 7. 27. 00:26
문제 retrofit과 room은 지금의 안드로이드에 있어서 정말 없어서 안 될 존재이다. 다른 라이브러리들도 많지만 이정도로 간결하게 쓸 수있으면서도 대중적으로 쓰는 안드로이드 라이브러리는 없을 것 같다. 보통 두 라이브러리를 같이 쓰는 경우에 room으로 retrofit의 통신 결과를 캐싱하는 경우가 많은데, 이 때 조금 불편한 문제가 발생한다. 바로 정확히 같은 데이터를 저장함에도 entity와 dto클래스를 따로 생성해줘야 한다는 점이다. 심지어 나는 기상청 api대응 문제로 2개의 entity와 1개의 dto를 만들어서 정확히 같은 데이터를 갖는 클래스가 3개나 있다. 같은 데이터를 받지만 라이브러리에 대응하기 위해 위와 같이 이름만 다른 클래스를 만들어 줘야 했다. 그래서 domain단으로 넘..