일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- architecture
- ProGuard
- Coroutines
- 프로그래머스
- boj
- MyVoca
- 백준
- Python
- 코드포스
- Gradle
- Compose
- Kotlin
- Coroutine
- androidStudio
- Codeforces
- 쿠링
- AWS
- 암호학
- Rxjava
- pandas
- livedata
- MiTweet
- relay
- android
- textfield
- GitHub
- 코루틴
- Hilt
- NGINX
- TEST
- Today
- Total
목록Kotlin (28)
이동식 저장소
간단한 직사각형 클래스를 정의해 보자. 직사각형은 너비, 높이, 넓이 속성을 갖는다. data class Rectangle( val width: Int, val height: Int, val area: Int, ) 끝~ ...일 리가 없지. 사실 이 구현은 매우 잘못된 구현이다. ``area``가 ``width``와 ``height``의 곱으로 주어진다는 보장이 없기 때문이다. 약간 개선해 보면, 생성자에서 ``width``와 ``height``를 입력받아 ``area``를 내부적으로 계산하게 정의할 수 있다. data class Rectangle( val width: Int, val height: Int, ) { val size: Int = width * height } ``width``와 ``heig..
3달 전에 이런 글을 쓴 적이 있다. [Kotlin] 코루틴의 실행 순서와 테스트 코드 비동기 코드는 본질적으로 어렵다. 제대로 공부하지 않은 비동기 코드는 더 어렵다. 지난 몇 일간 코루틴 ``ViewModel`` 코드를 테스트하다 아주 열불이 나서..;; 이참에 제대로 다시 공부해 보자. ``s thinking-face.tistory.com 위의 글에서 언급된 ``ViewModel`` 테스트는 여전히 해결되지 않았다. 실행할 때마다 결과가 달라지는 테스트라니.. 심지어 원격 빌드에서도 실패하는 바람에 빌드가 멈춘 적도 있다. 하지만 7월의 마지막 주말, 바로 오늘, 끈질기게 나를 물고 늘어지던 버그를 바로 오늘 해결했다. 이 글에서는 문제 상황과 문제를 풀기 위한 나의 눈물겨운 싸움을 기록하려 한다...
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 (수신 객체 지정 람다) 개발을 하다 보면 객체를 반복 사용하면서 그 객체에 대한 연산을 명시하는 경우가 많습니다. 수신 객체 지정 람다는..