일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Abstract Factory
- ㅓ
- Design Pattern
- 프로토타입 패턴
- 함수형프로그래밍
- Functional Programming
- El
- Kotlin
- r
- 추상팩토리패턴
- 코틀린
- Observer Pattern
- 디자인패턴
- 옵저버 패턴
- 팩토리 메소드
- builderPattern
- factory method
- 싱글톤
- F
- 빌터패턴
- a
- 디자인패턴 #
- designPattern
- ㅋㅁ
- Singleton
- Today
- Total
목록Kotlin in Action (36)
오늘도 더 나은 코드를 작성하였습니까?
컬렉션을 다룰 때 가장 많이 쓰는 연산은 인덱스를 사용해 원소를 읽거나 쓰는 연산과 어떤 값이 컬렉션에 포함되어 있는지 확인하는 연산이다. 인덱스로 원소에 접근: get set 코틀린에서는 인덱스 연산자도 관례를 따른다. 인덱스 연산자를 사용해 원소를 읽는 연산은 get으로 변환되고 원소를 쓰는 연산은 set으로 변환된다. data class Point(val x: Int, val y: Int) operator fun Point.get(index: Int): Int{ return when(index){ 0 -> x 1 -> y else -> throw IndexOutOfBoundsException("Invalid coordinate $index") } } fun main() { val p = Point(..
코틀린은 산술 연산자와 동일하게 원시 타입뿐 아니라 모든 객체에 대해 비교 연산을 수행할 수 있다. equals나 compareTo 를 호출해야 하는 자바와 달리 코틀린은 == 비교 연산자를 직접 사용할 수가 있어서 간결하게 코드를 작성할 수 있다. 동등성 연산자: equals class Point(val x: Int, val y: Int){ override fun equals(other: Any?): Boolean { if(other === this) return true // 최적화: 파라미터가 this와 같은 객체인지 확인. if(other !is Point) return false // 파라미터 타입을 검사한다. return x == other.x && y == other.y // 스마트 캐스트이..
코틀린은 어떤 언어 기능이 정해진 사용자 작성 함수와 연결되는 경우가 몇 가지 있다. 코틀린에서는 이런 언어 기능이 어떤 타입(class)과 연관되는 것이 아니라 특정 함수 이름과 연관된다. 예) 특정 클래스 안에 plus라는 이름의 메서드를 정의하면 그 클래스의 인스턴스에 대해 + 연산자를 사용할 수 있다. 언어의 기능( + 연산자 사용) 미리 정해진 이름의 함수(plus)를 연결해주는 기법을 코틀린에서는 관례(Convention)이라 한다. 언어기능을 타입에 의존하는 자바와 달리 코틀린은 함수의 이름에 의존한다. 이런 관례를 채택한 이유는 기존 자바 클래스를 코틀린 언어에 적용하기 위해서다. 기존의 자바 클래스가 구현하고 인터페이스는 이미 고정돼 있고 코틀린 쪽에서 자바 클래스가 새로운 인터페이스를 ..
널 가능성과 컬렉션 컬렉션 안에 널값을 넣을 수 있는지 여부는 어떤 변수의 값이 널이 될 수 있는지 여부와 마찬가지로 중요하다. 1. List = 리스트 자체는 항상 존재하며, 리스트의 각 원소는 널이 될 수 있다. 2. List? = 리스트가 null 일수는 있지만, 리스트가 참조가 존재한다면 그 원소는 전부 널 일수 없다. 3. List? = 리스트 자체가 널 일수도 있고 리스트가 존재하더라도 그 원소 역시 널 일수 있다. 3번과 같은 리스트는 널 값 검사를 List에 대해서 하고 그 원소를 참조할 때 역시 필요하다. fun addValidNumbers(numbers: List){ var sumOfValidNumbers = 0 var inValidNumbers =0 for(number in numbe..