일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코틀린
- 팩토리 메소드
- designPattern
- 싱글톤
- 빌터패턴
- 옵저버 패턴
- Design Pattern
- 추상 팩토리
- 디자인패턴 #
- Functional Programming
- F
- 디자인패턴
- PrototypePattern
- ㅋㅁ
- Kotlin
- r
- Observer Pattern
- 함수형프로그래밍
- El
- 추상팩토리패턴
- a
- factory method
- ㅓ
- builderPattern
- 프로토타입 패턴
- Singleton
- Abstract Factory
- Today
- Total
목록분류 전체보기 (327)
오늘도 더 나은 코드를 작성하였습니까?
컬렉션 함수를 연쇄하면서 매 단계마다 계산 중간결과를 새로운 컬렉션에 임시로 담는 건 너무 비효율적이다. 시퀀스를 사용하면 중간 임시 컬렉션을 사용하지 않고도 컬렉션 연산을 연쇄할 수 있다. 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..
람다 - 다른 함수에 넘길 수 있는 작은 코드 조각 - 공통된 코드 구조를 쉽게 함수로 뽑아낼 수 있다. 이벤트가 발생 하면 이 핸들러를 실행하자! 데이터 구조의 모든 원소에 이연산을 적용하자! 생각을 코드로 표현하기 위해 일련의 동작을 변수에 저장하거나 다른 함수에 넘겨야 하는 경우가 종종 있다. 기존에 자바는 무명 클래스로 이것을 해결하였지만 상당히 번거롭다. 함수형 프로그래밍은 함수를 값처럼 다루는 접근방법을 택하여 문제를 해결한다. 클래스를 선언하고 그 인스턴스를 함수에 넘겨 처리하는 대신에 함수를 직접 다른 함수에 전달한다. 예시) 사람들로 이루어진 리스트에서 연장자 찾기 data class Person(val name:String, val age: Int) fun findTheOldest(pe..
- ViewModel class 내에서 데이터 타입(Generic)을 보유할 LiveData의 객체를 선언한다. - onChanged() 메서드를 정의하는 Observer 객체를 생성합니다. onChanged()는 LiveData 객체가 보유한 데이터 변경 시 호출되어 로직을 처리한다. 일반적으로 Activity fragment와 같은 UI 컨트롤러에 Observer 객체를 생성합니다. - observe() 메서드를 사용하여 LiveData 객체에 Observer 객체를 연결합니다. observe() 메서드는 LifecycleOwner 객체를 사용합니다. 이렇게 하면 Observer 객체가 LiveData 객체를 구독하여 변경사 항에 관한 알림을 받습니다. 일반적으로 Activity fragment와 같..