2024/08/08 2

아이템22) 일반적인 알고리즘을 구현할 때 제네릭을 사용하라

타입 아규먼트를 사용하는 함수를 제네릭 함수라고 부름stdlib에 있는 filter 함수가 있음inline fun Iterable.filter(predicate: (T) -> Boolean): List { val destination = ArrayList() for (element in this) { if (predicate(element)) { destination.add(element) } } return destination}타입 파라미터는 컴파일러에게 타입과 관련된 정보를 제공하여 컴파일러가 타입을 조금 더 정확하게 추측할 수 있게 해줌filter 함수에서 컴파일러가 아규먼트가 컬렉션의 요소와 같은 타입이라는 것을 알 수 있으므로 잘못 처리하는 것을 막을 수 있음제네릭은 기본적으로 Lis..

아이템21) 일반적인 프로퍼티 패턴은 프로퍼티 위임으로 만들어라

코틀린은 코드 재사용과 과련해서 프로퍼티 위임이라는 새로운 기능을 제공프로퍼티 위임을 사용하면 일반적인 프로퍼티의 행위를 추출해서 재사용 가능대표적인 예로 지연 프로퍼티가 있음lazy 프로퍼티는 처음 사용하는 요청이 들어올 때 초기화되는 프로퍼티를 의미코틀린에서는 프로퍼티 위임을 활용해 간단하게 구현할 수 있음stdlib는 lazy프로퍼티 패턴을 쉽게 구현할수 있는 함수 제공val value by lazy { createValue() }변화가 있을 때 감지하는 observable 패턴을 쉽게 만들 수 있음stdlib의 observable 델리게이트를 기반으로 간단하게 구현할 수 있음var items: List by Delegates.observable(listOf()) { _, _, _ -> notifi..