kotlin
6 posts
data class, sealed class

data class 데이터를 담기 위한 클래스 , , , 메소드를 자동으로 생성 override하면 직접 구현한 코드를 사용 한 개 이상의 프로퍼티가 있어야 함 데이터 클래스는 abstract, open, sealed, inner를 붙일 수 없음 상속이 불가능 상속받았을 때 자동으로 생성되는 메소드 네 개가 어떻게 될지 모르기 때문 sealed class 추상 클래스로, 상속받은 자식 클래스의 종류를 제한 컴파일러가 sealed class의 자식 클래스가 어떤 것인지 앎 when과 함께 쓰일 때 장점을 느낄 수 있음 RecyclerView의 뷰 타입 체킹할 때 사용

March 08, 2023
kotlin
초기화 지연

정의 변수를 선언할 때 값을 지정하지 않고, 나중에 지정할 수 있는 방법 목적 메모리를 효율적으로 사용하기 위해서 null safe한 value를 사용하기 위해서 lateinit variable 변수 타입을 지정해 줘야 함 primitive 타입은 사용할 수 없음 선언 후 나중에 초기화해 줘도 됨 lazy value 선언과 동시에 초기화해야 함 호출 시점에 초기화가 이루어짐

March 08, 2023
kotlin
object

object 클래스를 정의함과 동시에 객체를 생성 싱글톤을 쉽게 만들 수 있는 키워드 생성자 사용 불가 프로퍼티, 메소드, 초기화 블록은 사용 가능 다른 클래스나 인터페이스를 상속받을 수 있음 에러 코드 정의할 때 많이 사용 companion object 동반 객체 java의 static과 동일한 역할 클래스 내에 하나만 생성할 수 있음

March 08, 2023
kotlin
확장 함수

정의 기존에 정의되어 있는 클래스에 함수를 추가하는 기능

March 01, 2023
kotlin
람다

정의 익명 함수 변수처럼 사용될 수 있음 (Argument Type) → Return Type 한 번 사용되고 재사용되지 않는 함수 구현 SAM (Single Abstract Method) 단일 추상 메소드 코틀린에서 함수형 인터페이스를 인자로 받는 자바 함수를 호출할 때는 인터페이스 객체를 람다로 대신 넘길 수 있음 함수형 인터페이스: 추상 메소드가 오직 하나뿐인 인터페이스(ex. setOnClickListener)

March 01, 2023
kotlin
범위 지정 함수 (Scope Function)

정의 코틀린 표준 라이브러리에서 제공하는 확장 함수 객체의 context 내에서 실행 가능한 코드 블럭을 만드는 함수 호출 시 임시 범위가 생성되며, 해당 범위 내에서는 이름 없이 객체에 접근이 가능 종류 수신 객체 it (생략 불가능) let also 수신 객체 this (생략 가능) apply run 수신 객체 함수의 인자 with 리턴 타입 수신 객체 apply also 람다 식의 마지막 행 run let with 사용 let: null 체크를 할 때, 지역 변수를 명시적으로 표현해야 할 때 run: 객체를 초기화하고 리턴 값이 있을 때 apply: 객체 초기화 also: 수신 객체를 명시적으로 사용하고 싶을 때, 로그를 남길 때 with: 객체 초기화, 람다 리턴 값이 필요 없을 때

March 01, 2023
kotlin