일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알게되는
- Compose
- Kotlin
- 안드로이드강좌
- ReactiveProgramming
- mockito
- 안드로이드
- theming
- Gradle
- 병럴프로그래밍
- 글또
- 커스텀상태
- 병렬프로그래밍
- 코루틴
- k8s
- 코틀린
- 안드로이드스튜디오
- 스레드
- 테스트
- 자바
- Coroutine
- kotlin강좌
- android
- 회고
- viewmodel
- g 단위테스트
- 디자인패턴
- 알고리즘
- Rxjava
- 책
- Today
- Total
목록Kotlin (13)
선생님, 개발을 잘하고 싶어요.
다루는 거 고차 함수: 람다를 인자로 받거나 반환하는 함수 인라인 함수 비로컬 return, 레이블, 로컬 return 무명 함수 고차함수 다른 함수를 인자로 받거나 함수를 반환하는 함수 코틀린으로 말하면, 람다나 함수 참조를 인자로 넘길 수 있거나 람다나 함수 참조를 반환하는 함수 코틀린에서 함수 변수 표현을 하기 위해서 람다, 함수 참조를 사용한다고 5장에서 말함. 인자로 받은 함수를 호출하는 구문은 일반 함수를 호출하는 구문과 같다. 컴파일된 코드에서 함수 타입은 일반 인터페이스로 표시된다. Function0, Function1 … 함수 타입 파라미터도 디폴트 값을 지정하거나 nullable 함수 타입을 만들 수 있다. 변수, 프로퍼티, 파라미터 등을 사용해 데이터 중복을 없애는 것과 같이, 람다를..
2부의 목적 코틀린으로 자신의 API를 만드는 법을 배운다. 프로그램 안에서 상호작용하는 클래스가 둘 이상이라면 다른 클래스에게 API를 제공하는 클래스가 적어도 하나 이상이므로, 라이브러리 개발자가 아니더라도 중요한 내용이다. 다루는 것 특정 함수 이름과 연관된 관례 (convention) 위임 프로퍼티 관례 operator 키워드를 붙임으로써 어떤 함수가 관례를 따르는 함수임을 명확히 한다. operator 없이 관례에서 사용하는 함수 이름을 쓴다면 컴파일러가 알려준다. 멤버 함수 뿐 아니라 확장 함수로도 operator 연산자를 정의할 수 있다. 산술 연산자 오버로딩 프로그래머가 직접 연산자를 만들어 사용할 수 없고 언어에서 미리 정해둔 연산자만 오버로딩할 수 있다. 클래스에서 정의해야하는 이름이 ..
에러는 어디서 처리하는가? 다음 코드는 getImage가 에러를 던진다면 어떻게 될까요? fun main() = runBlocking { try { val deferredImage = scope.async { getImage("path") } deferredImage.await() } catch (e: Exception) { // ignore all exceptions } } kotlin 문서를 참조하면 async 내부에서 에러가 발생하는 경우 await 시점에 잡히기 때문에 getImage에서 발생한 에러는 위의 catch 구문에 의해서 처리되게 됩니다. 그렇다면 다음 코드는 어떻게 동작할까요? scope.launch { try { val deferredImage1 = async { getImage("..
목차 도입 계속 함수로 나아가 봅시다. 이번 시간에는 "요즘 언어"라면 마땅히 지원하는 람다(lambda)에 대해서 알아봅시다. 이 글을 통해서 람다를 왜 사용하는지 코틀린에서 람다는 어떻게 표현하는지 실제 코드에서 어떤 식으로 활용되는지 알아보려고 합니다. TL;DR; 람다는 행동을 추상화하는 타입이다. 함수의 매개변수 타입 목록, 함수의 반환 값 이 두 가지만 있으면 함수를 호출할 수 있다. 람다 타입은 (함수 매개변수 타입 목록) → 함수의 반환 값 형태다. 함수의 마지막 매개변수가 람다라면 축약 표현이 가능하다. 매개변수 하나만 받는 람다의 경우 암시적 매개변수 이름 it 이 지정된다. 왜 람다? 널리 이롭게 쓰일 버튼을 만들어보자. 여러분은 코드 전체에 걸쳐서 사용할 Button 클래스를 만들고..