코틀린

코틀린의 양의 정수 타입 일반적인 다른 언어들과 같이 코틀린에서도 부호 없는 정수(0 보다 크거나 같은 정수)형 데이터 타입을 다루기 위한 다양한 타입들이 코틀린 1.5버전부터 지원되기 시작했다. 글의 제목이 있는 UByte, UShort, UInt, ULong이 그 타입들이다. 변수를 각 타입으로 만드는 방법은 어렵지 않다. 우리가 Float을 선언할 때 접미어로 f를 붙이는 것처럼 접미어로 U를 붙여주면 된다. fun main() { val uByte: UByte = 100U // U를 붙여주어야 한다. val uShort: UShort = 10_000U // U를 붙여주어야 한다. val uInt: UInt = 1_000_000U // U를 붙여주어야 한다. val uLong: ULong = 10..
lateinit 이란 무엇이며 언제 사용해야 하는가? 다음과 같은 NonNullableValueStateHolder 클래스를 살펴보자. *실제 코틀린에서는 아래와 같이 getter와 setter을 직접 설정하는 경우가 거의 없다. class NonNullableValueStateHolder() { private var nonNullableValue: String = "testValue" fun set(value: String) { nonNullableValue = value } fun get(): String { return nonNullableValue } } 이 클래스에는 nonNullableValue 라 불리는 String 타입의 non-nullable한 값이 있고, 이 변수에는 "testValue..
컬렉션 연산의 문제와 Sequence의 지연 계산을 통한 해결 컬렉션 연산의 문제 컬렉션을 사용해 람다 연산을 하게 되면 비효율적으로 동작한다. 예를 들어 컬렉션(리스트)에서 가장 먼저 나오는 짝수값을 찾고 싶다고 해보자. 이런 코드는 다음과 같이 작성될 수 있다. fun main() { val collection = listOf(1, 2, 3, 4, 5, 6, 7, 8) val result = collection.filter { println("filter >> $it 은 짝수인가? >> ${it % 2 == 0}") it % 2 == 0 // 짝수만 필터링 }.first() println(result) } 이렇게 작성된 코드가 어떻게 동작하는지 코드를 실행해 확인해 보자. 그러면 다음과 같은 결과를 ..
자바의 중첩 클래스 문제와 코틀린의 중첩 클래스 자바에서는 내부에 선언되는 중첩 클래스에서 기본적으로 바깥쪽 클래스의 변수를 참조할 수 있었다. 예를 들어 다음과 같이 OuterClass와 InnerClass가 있는 경우 InnerClass의 함수인 getOuterClassValue에서 OuterClass의 변수인 outerClassValue를 참조할 수 있었다. public class OuterClass { String outerClassValue = "outerClassValue"; class InnerClass { String getOuterClassValue() { return outerClassValue; } } } 하지만, 이 방식은 내부의 클래스에서 항상 외부의 클래스에 대한 참조를 유지한다..
internal 변경자(Modifier)의 의의internal 변경자는 코틀린에서 클래스 혹은 함수에 모듈 수준의 가시성을 설정하기 위해 사용하는 변경자이다. 모듈 수준의 가시성이란 모듈 내에서는 public처럼 어디에서나 접근 가능하지만, 모듈 외부에서 접근하지 못하는 변경자이다. internal을 설정해야 하는 경우는 다양하다. 모듈 내부에서만 사용하는 함수에 internal을 설정해 외부에서 접근하지 못하도록 만드는 경우가 일반적이며, 외부에는 인터페이스만 공개하고 모듈 내부에서 인터페이스의 구현체(클래스)를 만들어 사용하는 경우에 유용하다. internal 변경자 사용 예시대표적으로 우리가 사용하는 젯브레인사에서 개발한 코루틴 라이브러리의 경우 Mutex 인터페이스의 구현체인 MutexImpl을 ..
Dev.Cho
'코틀린' 태그의 글 목록 (4 Page)