| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 프로토타입 패턴
- 싱글톤
- 디자인패턴 #
- 함수형프로그래밍
- Singleton
- Observer Pattern
- 코루틴
- material3
- designPattern
- 추상팩토리패턴
- 옵저버 패턴
- Kotlin
- 빌터패턴
- android designsystem
- builderPattern
- 디자인패턴
- ㅓ
- define
- 안드로이드 디자인시스템
- compose
- 추상 팩토리
- Functional Programming
- factory method
- PrototypePattern
- 코틀린
- 팩토리 메소드
- Abstract Factory
- Design Pattern
- ㅋㅁ
- Coroutines
- Today
- Total
목록전체 글 (338)
오늘도 더 나은 코드를 작성하였습니까?
List 인터페이스를 살펴보자. public interface List : Collection { // Query Operations override val size: Int override fun isEmpty(): Boolean override fun contains(element: @UnsafeVariance E): Boolean override fun iterator(): Iterator // Bulk Operations override fun containsAll(elements: Collection): Boolean // Positional Access Operations /** * Returns the element at the specified index in the list. */ pub..
변성의 개념은 List과 List와 같이 기저 타입이 같고 타입 인자가 다른 여러 타입이 서로 어떤 관계가 있는지를 설명하는 개념이다. 변성이 있는 이유 List 타입의 파라미터를 받는 함수에 List을 넘기면 안전할까? 자신있게 안정성을 보장할 수 없다. fun printContents(list: List){ println(list.joinToString()) } fun main() { val list = listOf("abc", "efg") printContents(list) } 위 경우는 잘작동 한다. 각 원소를 Any 타입으로 받아들이는데 String은 Any의 하위 타입이기 때문이다. 어떤 함수가 리스트의 원소를 추가하거나 변경한다면, 타입의 불일치가 생겨 불가능하지만, 원소의 추가나 변경이 없..
소거된 타입 파라미터와 실체화된 타입 파라미터 JVM의 제네릭스는 보통 타입 소거를 사용해 구현된다. 이것은 Runtime시 타입 인자 정보가 들어있지 않다 코틀린의 타입 소거가 실용적인 명에서 어떤 영향을 끼치고 함수를 inline으로 선언함으로써 이런 제약을 어떻게 우회할 수 있는지 살펴본다. 함수를 inline으로 만들면 타입 인자가 지워지지 않게 할 수 있다.(타입 실체화) 실행 시점의 제네릭스: 타입 검사와 캐스트 자바와 마찬가지로 코틀린 제네릭 타입인자 정보는 런타임에 지워진다. 제네릭 클랙스의 인스턴스는 인스턴스 생성시 쓰인 타입 인자에 대한 정보를 유지하지 않는다. List 을 생성 후 안에 String 객체를 여럿 넣더라도 실행 시점에는 그 객체를 List로만 볼 수 있다. 안에 원소가 ..
타입 파라미터 제약 - 클래스나 함수에 사용할 수 있는 타입인자를 제한하는 기능 예를 들어 List List에 원소의 합을 구하는 sum 함수를 생각해 보자. List같은 경우는 적용을 할 수가 없다. 이런 경우 sum 함수는 타입 파라미터로 숫자 타입만을 허용해야된다. 상한(upper bound) - 제네릭 타입을 인스턴스화할 때 사용하는 타입 인자는 반드시 그 상한타입 이거나 그 상한타입의 하위타입이여야 한다. fun List.sum(): T{ } 타입 파라미터 T에 대한 상한을 정하고 나면 T타입의 값을 그상한 타입의 값으로 취급할 수 있다 fun oneHalf(value: T): Double{ return value.toDouble() / 2.0 } 타입 파라미터를 제약하는 함수 선언하기 fun ..
