일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Coroutine
- AWS
- Coroutines
- NGINX
- MiTweet
- relay
- boj
- android
- androidStudio
- Gradle
- 프로그래머스
- Hilt
- 코루틴
- Codeforces
- 코드포스
- 쿠링
- Compose
- TEST
- textfield
- pandas
- Rxjava
- Python
- 백준
- livedata
- architecture
- MyVoca
- Kotlin
- ProGuard
- 암호학
- GitHub
- Today
- Total
목록Primary/Kotlin (36)
이동식 저장소
GitHub - Kotlin/kotlinx.collections.immutable: Immutable persistent collections for Kotlin Immutable persistent collections for Kotlin. Contribute to Kotlin/kotlinx.collections.immutable development by creating an account on GitHub. github.com ``List``에는 리스트를 수정할 수 있는 메서드가 없지만, 어떤 리스트의 타입이 ``List``라고 해서 리스트의 내용이 변경되지 않는다고 말할 수는 없다. ``MutableList``를 ``List``로 반환했을 지도 모르기 때문이다. Compose 컴파일러가 ``Lis..
Kotlin을 처음 배울 때는 ``enum class``와 ``sealed class``를 혼동하곤 했다. enum을 구현할 떄 ``enum class`` 대신 ``sealed class``를 써도 되지 않나? 결론 ``sealed class``를 써도 되지만, 바람직한 사용법은 아니다. 왜? ``enum class``가 왜 적합한지는 설명 안 해도 되겠지? 이제 ``sealed class``의 바람직한 사용 예시를 설명하려 한다. ``sealed class``는 클래스가 정의된 블럭 안에서만 상속될 수 있으며, 외부에서의 상속을 허용하지 않는다. sealed class Animal { // Animal은 이 안에서만 상속될 수 있다. class Cat: Animal class Dog: Animal } ..
다음 글을 요약했음을 밝힙니다. Inline classes | Kotlin kotlinlang.org 코드를 작성하다 보면, primitive 타입을 감싸는 wrapper 클래스가 필요할 때가 있다. 예를 들어 도형의 너비를 ``Int``로 직접 나타내는 대신 ``Width`` 클래스로 나타내는 것이다. 물론 ``Width``는 내부적으로 ``Int`` 값을 가지고 있다. class Width(val value: Int) 그러나 위 코드처럼 하면 런타임 성능이 크게 나빠진다. 객체를 만들 때 힙 메모리를 할당하기 때문이다. 게다가 위 코드처럼 primitive 타입을 감싸면 성능이 더 나빠진다. Primitive 타입은 가장 많이 쓰이는 만큼 최적화도 잘 되어 있는데, wrapper 클래스는 완전히 새로..
Kotlin의 확장 함수는 보통 파일의 최상위 레벨에서 정의된다. 그런데 확장 함수를 클래스 안에서 정의할 수도 있다. 사실 어디서나 정의할 수 있다. 어쨌든, 클래스 안에 확장 함수를 정의하면 뭐가 좋을까? 확장 함수를 품은 클래스 클래스 ``A``에서 선언된 확장 함수는 ``A`` 내부 또는 ``A``를 receiver로 받는 람다식 안에서만 사용될 수 있다. Receiver가 무엇인지 궁금하다면 다음 글을 참고하자. 코틀린(Kotlin) - lambda with receiver(수신 객체 지정 람다) : with, apply lambda with receiver (수신 객체 지정 람다) 개발을 하다 보면 객체를 반복 사용하면서 그 객체에 대한 연산을 명시하는 경우가 많습니다. 수신 객체 지정 람다는..
Kotlin에서는 함수 역시 하나의 타입으로 취급된다. 함수를 변수로 참조할 수 있지 않는가? 심지어 클래스나 인터페이스가 함수를 상속받을 수도 있다. 아무리 그래도 그렇지, 어떻게 함수를 상속받아요 나도 몰랐던 내용인데, 가능하다고 한다. 그 전에 우선 invoke 함수에 대해 알아보자. invoke operator 함수를 선언하면 ``+``, ``[]`` 등 여러 연산자를 사용할 수 있다. invoke도 그러한 함수 중 하나로, invoke를 선언하면 객체를 함수처럼 호출할 수 있다. class Greeter(val greeting: Greeting) { operator fun invoke(name: String) = println("$greeting, $name!") } val me = Greete..