Kotlin 6

위임하는 방식(By)과 직접 할당하는 방식(=)의 차이는 무엇일까?

현재 프로젝트의 마감일이 가까워짐에 따라 코드를 점검하는 과정에서 다음의 방식을 혼용하고 있음을 알게 되었습니다.val a = getSurveyViewModel.a.collectAsState().valueval a by getSurveyViewModel.a.collectAsState()val a by viewModel.a.collectAsState()이 구문에서 by 키워드는 위임(delegate)을 의미합니다.collectAsState()는 Flow를 State로 변환하는 함수입니다. 이 함수는 Compose에서 상태(State)를 구독(subscribe)하고 UI를 다시 렌더링할 수 있게 해줍니다.by 키워드를 사용하면 State 객체를 a 변수에 위임하여, a 를 직접 State 객체처럼 사용할 수..

질문 정리 2024.05.24

왜 코틀린인가요?

새 프로젝트를 시작할 때가 되면 그때의 환경에 맞게 기술스택과 언어등을 정하게 됩니다. 3년정도 전부터 안드로이드 프로젝트를 할 때, 코틀린을 사용해왔는데 이쯤되니 왜 코틀린을 사용하게 되었는지 기억이 나지 않아서 생각난 김에 정리를 하게 되었습니다. 코틀린이란 무엇인가? 코틀린(Kotlin)은 JetBrains가 2011년에 개발한 정적 타입의 프로그래밍 언어입니다. 코틀린은 현대적인 프로그래밍 언어가 가져야 할 특징들을 갖추고 있으며, JVM(Java Virtual Machine), Android, 브라우저, 네이티브 환경에서 동작합니다. 코틀린은 다양한 플랫폼에서 사용될 수 있도록 설계되었으며, Java와 완벽하게 호환될 수 있습니다. 이 때문에 기존의 Java 코드를 변경하지 않고도 코틀린 코드를..

질문 정리 2023.06.27

코틀린 it과 this 정확히 무슨 개념일까?

항상 간편하게 사용했지만 정확히 알지 못했던 it과 this의 개념을 정리해봤습니다. it it은 람다식 내부에서 사용되는 암시적 변수입니다. 람다식에서 인자가 하나인 경우 it을 사용해서 인자를 참조할 수 있습니다. val numbers = listOf(1, 2, 3, 4, 5) val evenNumbers = numbers.filter { it % 2 == 0 } 위의 예제에서 it은 numbers 리스트의 각 요소를 나타냅니다. this this는 클래스의 인스턴스를 참조하는데 사용됩니다. this를 사용하여 클래스 내부에서 멤버 변수나 멤버 함수를 참조할 수 있습니다. class Person(val name: String) { fun printName() { println(this.name) } ..

질문 정리 2023.03.15

코틀린과 지연 초기화, UninitializedPropertyAccessException 방지법

이번에 지연초기화에 대해서 배웠는데 너무 필요했던 내용들이라서 정리해두려고 합니다. lateinit 코틀린에서 지연 초기화란 객체의 초기화를 객체가 필요한 시점에 이루어지도록 늦추는 것을 의미합니다.원래는 선언하는 즉시 초기화 해야하는 것을 초기 값을 입력하지 않고, 이후에 초기화 할 수 있습니다. 따라서 객체가 다른 객체에 의존하는 경우 해당 객체들이 모두 생성되기 전까지 초기화를 지연시킬 수 있습니다. lateinit 지연 초기화를 사용하면서 주의할 점이 있습니다. 변수가 초기화 되기 전에 호출되는 경우, UninitializedPropertyAccessException이 발생할 수 있습니다. 이러한 문제를 방지하기 위해서 호출하기 전에 초기화가 되었는지 체크하는 것이 좋습니다. class MyCla..

질문 정리 2023.03.15

Object와 Any, void와 Unit

자바 Object와 코틀린 Any 코틀린의 Any 클래스는 자바의 Object 클래스와 기능이 유사합니다. 둘 다 모든 클래스의 기본 클래스이며, 모든 객체의 상위 클래스입니다. 하지만 Any 클래스는 자바의 Object 클래스보다 더 많은 기능을 제공합니다. 예를 들어, 코틀린의 Any 클래스는 다음과 같은 기능을 제공합니다. equals() : 메서드를 오버라이딩하여 객체의 값 비교를 할 수 있습니다. hashCode() : 메서드를 오버라이딩하여 객체의 해시 코드를 계산할 수 있습니다. toString() : 메서드를 오버라이딩하여 객체를 문자열로 표현할 수 있습니다. 따라서, 코틀린에서 Any 클래스를 사용하여 객체를 정의하면 equals(), hashCode(), toString() 등의 메서드..

질문 정리 2023.03.14

코틀린 Number란 무엇일까?

Number란? 코틀린에서 Number는 숫자 타입의 공통 기능을 제공하는 추상 클래스입니다. 코틀린에서 제공하는 숫자 타입은 다음과 같습니다. Byte: 8비트 부호 있는 정수 타입 Short: 16비트 부호 있는 정수 타입 Int: 32비트 부호 있는 정수 타입 Long: 64비트 부호 있는 정수 타입 Float: 32비트 IEEE 754 부동 소수점 타입 Double: 64비트 IEEE 754 부동 소수점 타입 이러한 숫자 타입은 Number 클래스를 상속하고 있으므로, 공통적으로 toByte(), toShort(), toInt(), toLong(), toFloat(), toDouble() 등의 메서드를 가지고 있습니다. 이 메서드들은 해당 숫자 타입으로 변환하는 기능을 제공합니다. 또한, 코틀린에..

질문 정리 2023.03.14