일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ㅓ
- 옵저버 패턴
- designPattern
- 빌터패턴
- Design Pattern
- 싱글톤
- Singleton
- Kotlin
- a
- Functional Programming
- 디자인패턴 #
- 추상 팩토리
- ㅋㅁ
- factory method
- Abstract Factory
- 프로토타입 패턴
- Observer Pattern
- F
- 디자인패턴
- 추상팩토리패턴
- 함수형프로그래밍
- 코틀린
- builderPattern
- El
- 팩토리 메소드
- r
- PrototypePattern
- Today
- Total
목록Kotlin in Action/코틀린 기초 (15)
오늘도 더 나은 코드를 작성하였습니까?
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/sgDrs/btqGUcGwxWE/O3zNnuEgK85auixK7IhVKK/img.png)
코틀린을 비롯한 최신 언어에서는 null에 대한 접근방법은 가능한 이문제를 runtTime 시점이 아닌 compile 시점으로 옮기는 것이다. null 이 될 수 있는지 여부를 타입 시스템에 추가함으로써 컴파일러가 여러 가지 오류를 컴파일 시 미리 감지해서 실행 시점에 발생하는 예외를 줄이는 것이다. Null 이 될 수 있는 타입 - 코틀린은 null 이 될 수 있는 타입을 명시적 지원한다 - TYPE? = TYPE or null - null이 될 가능성이 있는 타입의 변수는 메서드의 직접 호출을 할 수 없다. - null이 될 가능성이 있는 타입의 변수를 null 이 될 수 없는 타입의 변수에 대입할 수 없다. - null이 될 가능성이 있는 타입을 null 될 수 없는 타입을 파라미터로 받는 함수에 ..
실제로 다뤄야 되는 API 중에 상당수는 자바로 작성되어 있다. 하지만 코틀린의 람다를 이용하면 아무런 문제 없이 자바 API를 사용할 수 있다. 예) 자바에서 버튼에 리스너 객체를 전달하기 위해 무명 클래스의 인스턴스를 생성해서 넘겨준다. button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } }); button.setOnClickListener = { view -> } 이런 코드가 작성 가능한 이유는 OnClickListener 인터페이스가 단 하나의 추상 메서드를 가지고 있기 때문이다. 이런 인터페이스를 SAM(Single Abstract Method) 인터페이스라고 부른다. ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/biUwDb/btqGIo0vtvo/V6XsSSHhM4Q4MzMlYnR2vK/img.png)
컬렉션 함수를 연쇄하면서 매 단계마다 계산 중간결과를 새로운 컬렉션에 임시로 담는 건 너무 비효율적이다. 시퀀스를 사용하면 중간 임시 컬렉션을 사용하지 않고도 컬렉션 연산을 연쇄할 수 있다. fun main() { val people = listOf( Person("Alice", 27), Person("Bob", 31), Person("kim", 19), Person("hong", 25), Person("park", 12)) people.map { it.name }.filter { it.startsWith("A") } people.asSequence() .map { it.name } .filter { it.startsWith("A") } .toList() } 원소가 적은 경우는 큰 차이가 없겠지만 원소가..
- 함수형 프로그래밍 스타일을 사용하면 컬렉션을 다룰 때 매우 편리하다 - 많은 작업에 라이브러리 함수를 활용하고 코드가 간결해진다. 필수적인 함수: filter와 map 컬렉션을 활용할 때 기반이 되는 함수이며 대부분의 컬렉션 연산을 이 두 함수를 통해 표현 가능하다 filter 함수 - 컬렉션은 이터레이션 하면서 주어진 람다에 각 원소를 넘겨서 람다가 true를 반환하는 원소만 모은다. - predicate를 만족하는 새로운 컬렉션을 반환한다. - 원치 않는 원소를 제거한다 하지만 filter는 원소를 변환할 수는 없다 - 원소를 변환하려면 map함수를 사용한다. fun main() { val people = listOf(Person("kim",15), Person("hong", 18), Person..