일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- relay
- android
- architecture
- livedata
- GitHub
- Compose
- Rxjava
- boj
- 암호학
- 프로그래머스
- Python
- AWS
- Coroutine
- 쿠링
- TEST
- ProGuard
- Coroutines
- androidStudio
- 백준
- Codeforces
- MyVoca
- activity
- MiTweet
- 코루틴
- pandas
- 코드포스
- Kotlin
- textfield
- Gradle
- Hilt
- Today
- Total
목록Primary (163)
이동식 저장소
일반적인 for문과 ``Collections.forEach()`` 중 뭘 써야 하나요? JetBrains의 Kotlin 개발자들이 쓴 Kotlin in Action에 이런 구절이 있다. The forEach function is somewhat more concise than a regular for loop, but it doesn’t have many other advantages, so you needn’t rush to convert all your loops to lambdas. 요약하면 ``forEach``가 읽기 쉬운 건 맞지만, for문을 모두 바꿔야 할 만큼 명확한 이점이 있는 것은 아니라고 한다. 각자 편한 걸 쓰는 걸로.
가위바위보에서 낼 수 있는 선택지는 가위, 바위, 보 3개뿐이다. 따라서 가위바위보의 참가자들은 다른 선택지를 내지 말아야 한다. 현실에서는 상대방의 강력한 항의와 눈초리를 통해 제한되지만, 프로그래밍에서도 그렇게 강제할 수 있을까? interface RSPOption class Rock: RSPOption class Scissors: RSPOption class Paper: RSPOption // 이건 반칙이다 class Gun: RSPOption 짖궂은 개발자가 가위바위보에 ``Gun``을 추가하지 못하도록 막을 수 있는 방법이 없을까? 있으니까 글을 썼겠지? sealed class Kotlin의 sealed class를 사용하면 외부 개발자가 상속할 수 없는 상위 타입을 만들 수 있다. sealed..
Kotlin에서도 클래스 안에 다른 클래스를 정의할 수 있다. 특정 외부 클래스에 종속된 클래스를 외부로부터 숨기고자 할 때 유용하다. 그러나 Kotlin의 내부 클래스는 기본적으로 외부 클래스의 멤버에 접근할 수 없다. 예시를 하나 들어 보겠다. ``View``를 상속하여 커스텀 뷰를 만들려 한다. 이때 ``View``를 직렬화(serialize) 가능하게 만든다고 생각해 보자. 뷰 자체를 직렬화하기는 쉽지 않지만, 대신 뷰가 가지고 있는 데이터를 직렬화하면 된다. 뷰의 데이터를 담는 일반적인 객체를 정의하기 위해 ``Serializable``을 구현하는 ``State`` 인터페이스를 정의하자. interface State: Serializable interface View { fun getState(..
Abstract class(이하 추상 클래스)는 인스턴스를 만들 수 없는 클래스이다. 추상 클래스는 보통 추상 메소드를 포함한다. 추상 메소드란 기본적으로 구현되지 않은 메소드이며 따라서 자식 클래스에서 구현되어야 한다. 추상 메소드는 항상 `open`이므로 별도로 `open` 키워드를 적을 필요는 없다. abstract class Animated { abstract fun animate() open fun stopAnimate() { // default implementation(기본 구현)을 가질 수 있음 } fun animateAgain() { // default implementation(기본 구현)을 가질 수 있음 } } 위의 예시에서 `animate()`는 추상 메소드이다. 따라서 `Anima..
참고: 이 글은 Kotlin - Inline classes 공식 문서를 번역한 글입니다. Inline classes | Kotlin kotlinlang.org 비즈니스 로직에서 primitive 타입을 감싸야 하는 경우가 가끔 생긴다. 예를 들어 ``Card``의 고유 아이디를 ``val id: Long``으로 나타낼 수도 있지만, ``CardId`` 클래스를 이용하여 표현하면 의미를 더 명확히 드러낼 수 있다. 겨우 아이디 하나 때문에 그렇게까지 해야 하나 싶기도 하지만, 멤버 변수의 값에 제한이 있는 경우 ``inline class``를 유용하게 사용할 수 있다. 예를 들어 ``month``라는 변수는 1부터 12까지의 값만을 가질 수 있으므로 13 이상의 값이 주어지면 값을 할당하지 않도록 코드를 ..