일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- PrototypePattern
- Singleton
- ㅓ
- Design Pattern
- 팩토리 메소드
- 코틀린
- 함수형프로그래밍
- 디자인패턴 #
- 추상팩토리패턴
- ㅋㅁ
- r
- 옵저버 패턴
- El
- builderPattern
- designPattern
- Functional Programming
- 추상 팩토리
- a
- F
- factory method
- 디자인패턴
- Observer Pattern
- Kotlin
- 프로토타입 패턴
- 빌터패턴
- 싱글톤
- Abstract Factory
- Today
- Total
목록Kotlin in Action/코틀린 기초 (15)
오늘도 더 나은 코드를 작성하였습니까?
1. 코틀린 객체 생성 및 초기화의 기본 kotlin class의 생성자를 통해 객체를 생성할때, 자세히 살펴보자. class Person(val name: String, gender: String = "male") { val gender: String init { this.gender = if (gender in arrayOf("male", "female")) gender else throw IllegalArgumentException() } var age = 0 constructor(name: String, age: Int) : this(name) { this.age = age } } 1. primary constructor 클래스 이름뒤 ( ... ) 주생성자의 parmeter에 val( 기본 ge..
apply, with, let, also, run 함수는 작동 방식 및 결과가 유사하여 헷갈리기 때문에 공통점과 차이점을 구별하여 적재적소에 사용하는 방법을 알아보자 위 5개의 함수는 공통적으로 수신객체 및 그 객체에 적용되는 람다 함수를 가진다. - 수신객체 - 수신객체 지정람다 with @kotlin.internal.InlineOnly public inline fun with(receiver: T, block: T.() -> R): R { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } return receiver.block() } receiver(수신객체), block(수신객체 지정람다) T.( )의 값을 반환 즉, 수신객체를 가지고 함..
널 가능성과 컬렉션 컬렉션 안에 널값을 넣을 수 있는지 여부는 어떤 변수의 값이 널이 될 수 있는지 여부와 마찬가지로 중요하다. 1. List = 리스트 자체는 항상 존재하며, 리스트의 각 원소는 널이 될 수 있다. 2. List? = 리스트가 null 일수는 있지만, 리스트가 참조가 존재한다면 그 원소는 전부 널 일수 없다. 3. List? = 리스트 자체가 널 일수도 있고 리스트가 존재하더라도 그 원소 역시 널 일수 있다. 3번과 같은 리스트는 널 값 검사를 List에 대해서 하고 그 원소를 참조할 때 역시 필요하다. fun addValidNumbers(numbers: List){ var sumOfValidNumbers = 0 var inValidNumbers =0 for(number in numbe..
코틀린은 원시 타입과 래퍼 타입을 구분하지 않는다 원시 타입은 변수에 할당한 그 값이 직접 메모리에 들어간다. 참조 타입은 그 객체에 대한 주소 값이 메모리에 들어간다. 자바의 경우 참조 타입이 필요한 경우 원시 타입을 래퍼 클래스로 감싸서 사용한다. 예를 들면 Collection 가 아닌 Collection 처럼 말이다. 하지만 코틀린은 그렇지 않다 래퍼타입과 원시 타입을 구분하지 않으면 편리하다. 또한 원시타입에 대한 메서드 호출이 가능하다. *coerceIn은 값을 특정 범위로 한정한다. fun showProgress(progress: Int){ val percent = progress.coerceIn(0,100) println("$percent done! ") } fun main() { showP..