포스팅 썸네일 이미지

학습/CS

If I can use if, when to use when

Kotlin 공식문서에서도 if 대신 when을 사용할 것을 권장하고 있습니다. 그런데 왜 if 대신 when을 사용해야 하는지 아시나요? Prefer using when if there are three or more options. https://kotlinlang.org/docs/coding-conventions.html#if-versus-when Coding conventions | Kotlin kotlinlang.org Kotlin의 when은 Java의 switch 문으로 변환된다. Kotlin에서 when을 사용하는 코드는 Java의 switch 문으로 변환됩니다. 직접 확인해봅시다. 아래와 같이 사용자가 입력한 값에 따라 Grade를 반환하는 함수가 있습니다. enum class Grade..

2024.03.06 게시됨

포스팅 썸네일 이미지

학습/CS

Sealed class vs Sealed interface vs Enum

Sealed classsealed class는 같은 모듈의 같은 패키지에서만 상속할 수 있는 클래스로, 유한한 개수의 subclass로 구성된 closed type hierarchy를 제공하는 클래스다. 또한 상속은 런타임이 아닌 컴파일 타임에만 허용된다. 그래서 third-party 코드에서 sealed class를 상속하는 클래스를 정의할 수 없다. abstract class와 대비되는 것을 알 수 있다. 아래와 같이 MyResult가 정의되어 있는 패키지와 다른 a 패키지에 정의되어 있는 MyResponse 클래스가 MyResult Sealed class를 상속하지 못하는 것을 볼 수 있다. Inheritor of sealed class or interface declared in packa..

2024.03.05 게시됨

포스팅 썸네일 이미지

학습/CS

Kotlin에서 data class는 왜 사용할까

자바에서는 클래스를 선언할 때, equals, hashCode, toString과 같은 메소드를 직접 선언해야 한다. 반면 코틀린에서는 컴파일러가 컴파일 단계에서 자동으로 생성해준다. 컴파일러가 자동으로 생성해주는 위 메소드들을 override 해야 되는 경우는 언제일까? toString 기본 제공되는 toString 메소드에 의해 표현되는 문자열은 Client@ef32a8 과 같은 형식이다. 이 문자열을 클래스가 가지고 있는 데이터를 포함하는 의미있는 문자열로 변경하기 위해서 toString 메소드를 오버라이드해야 한다. class Client(val name: String, val postalCode: Int) { override fun toString(): String { return "Client..

2024.02.16 게시됨