Language

Language/Kotlin

[Kotlin] 함수형 프로그래밍

일급 객체 Kotlin의 함수는 Java의 함수와 다르게 일급 객체(First-Class Object)이다. 일급 객체는 일반적으로 다른 객체들에 적용 가능한 모든 연산을 적용할 수 있는 객체를 의미하는데, Java는 여타 객체들이 함수의 파라미터, 리턴 값으로 선언될 수 있는 반면 함수는 그러지 못한다. 또한 함수 자체에는 타입을 가지지 못하고 SAM(Single Abstracy Method)인터페이스를 통해 표현되기 대문에 일급 객체라고 할 수 없다. 반면 Kotlin의 경우에는 여타 다른 객체들에 적용 가능한 연산들을 Kotlin 함수에도 적용할 수 있다. 따라서 함수를 변수로써 선언할 수 있고 , 함수 자체를 다른 함수의 파라미터 혹은 리턴 값으로 선언할 수 있다. 한번 비교해보자. public ..

Language/Kotlin

[Kotlin] Sequence

Iterable 단건의 데이터가 아닌, 여러 건의 데이터는 보통 `Collection` 인터페이스의 구현체들을 사용하여 처리한다. class PurchaseHistory( val occurTime: LocalDateTime, val price: Int, ) fun getAverage(allHistory: List): Double { return allHistory .filter { it.occurTime.isAfter(LocalDateTime.now().minusMonths(1)) } .map { it.price } .sortedDescending() .take(50_000) .average() } 보통 위와 같이 `Iterable`의 확장함수를 사용하여 `Collection` 데이터를 조작할 것이다. ..

Language/Kotlin

[Kotlin] 표준 위임 객체

2023.10.25 - [Language/Kotlin] - [Kotlin] 지연과 위임 - lateinit, by, lazy [Kotlin] 지연과 위임 - lateinit, by, lazy lateinit Kotlin은 Java와 다르게 프로퍼티라는 개념이 있고, 주 생성자를 통해 프로퍼티를 선언하며, 프로퍼티는 인스턴스 생성 시점 당시에 초기화가 되어야 한다. Java의 경우에는 Null Safety를 언어 cares-log.tistory.com 코틀린의 위임에 대한 기본 개념은 위 포스팅에 작성되어 있습니다. 참고하시면 좋습니다. notNull public fun notNull(): ReadWriteProperty = NotNullVar() private class NotNullVar() : Rea..

Language/Kotlin

[Kotlin] 지연과 위임 - lateinit, by, lazy

lateinit Kotlin은 Java와 다르게 프로퍼티라는 개념이 있고, 주 생성자를 통해 프로퍼티를 선언하며, 프로퍼티는 인스턴스 생성 시점 당시에 초기화가 되어야 한다. Java의 경우에는 Null Safety를 언어 자체에서 지원하지 않기 때문에, 초기화되지 않은 멤버변수는 null로 초기화가 되지만, Kotlin의 경우 언어 자체적으로 Null Safety를 지원하기에 설령 null이라고 하더라도 프로퍼티 자체는 무조건 값을 초기화 해야 한다. 하지만 인스턴스 생성 시점에 값을 초기화하고 싶지 않아야 하는 경우도 있을 것이다. 예를 들어, 휴대전화 번호로 가입을 할 수 있고, 전화번호 인증 이후 비밀번호를 무조건 입력해야 하고, 요구사항 상 비밀번호가 없는 회원은 존재할 수 없다고 해보자. cl..

Language/Kotlin

[Kotlin] 제네릭(Generics)

제네릭(Generics) 이란? 다양한 타입의 객체들을 다루는 메서드나 클래스에 대해 컴파일 시 타입 체크를 해주는 기능이다. 타입 에러를 런타임이 아니라 컴파일 타임에 알 수 있기에 코드 안정성을 높일 수 있다. 제네릭을 사용하는 가장 대표적인 인터페이스로 `List`가 있는데, 리스트 자료구조에 담는 타입을 컴파일 시에 체크하여 타입 안정성을 제공해주기 위함이다. 또한 제네릭을 사용하면 이미 리스트의 요소가 제네릭에 명시된 타입이라는 것을 보장해주기 때문에 타입 체크와 형변환을 생략할 수 있게 된다. 번외로, Java의 경우에는 초기에 제네릭을 제공하지 않아 이전 버전과의 호환성을 위해 `List` 타입 역시 제네릭 없이 사용할 수 있지만, Kotlin의 경우에는 언어가 만들어 질 때 부터 제네릭을 ..

괴발자
'Language' 카테고리의 글 목록 (2 Page)