Kotlin 언어는 nullable 특성을 가지고 있다. 즉, null 값을 허용하며, 타입도 존재한다. 따라서 null이 될 수 있는 타입을 다룰 때 처리하는 방법을 정리하려고 한다. ?. (안전한 호출 연산자) 호출하려는 값이 null이 아니면, 일반 메서드 호출처럼 작동한다. 만약에 null 인 경우, null 값을 반환한다. fun safetyCallOperation(text: String?) { val result: String? = text?.toUpperCase() // 결과는??? } 위와 같은 코드가 있을 때, text 값이 null이 아니면, toUpperCase() 메서드를 호출하고, null인 경우 그대로 null 값을 반환한다. 따라서 result 변수의 타입은 String?이다...
Kotlin에도 Java 8 Stream과 동일한 지연 계산이 존재하며, Sequence 인터페이스를 활용해서 이를 처리한다. 이에 대해서 간략하게 정리해보려고 한다. 컬렉션 함수를 연쇄할 때, 처리되는 방식 컬렉션 함수의 경우에는 결과 컬렉션을 즉시 생성한다는 특징을 가지고 있다. 따라서 map과 filter를 연쇄해서 처리할 때, 계산 중간 결과를 새로운 컬렉션에 임시로 담는다. 예를 들어 아래와 같은 코드가 있다면, 다음과 같이 처리된다. people.map { it.age }.filter { it >= 30 } 컬렉션의 원소가 적은 경우에는 위와 같이 처리돼도 문제가 없지만, 컬렉션의 원소가 수십만 개에서 수백만 개로 이루어져 있는 경우에는 효율이 떨어지게 된다. 원소가 정말 많은 컬렉션에서 Se..