Language (21) 썸네일형 리스트형 코틀린[Kotlin]에서 Delegation 패턴 사용하기 Delegation 디자인 패턴에서 Delegate Pattern은 어떤 기능을 자신이 처리하지 않고 다른 객체에 위임을 시켜 그 객체가 일을 처리하도록 하는 것입니다. Delegate은 사전적 정의로 위임하다. 대표자 라는 뜻입니다. Derived 클래스는 모든 public 멤버를 지정된 객체에 위임하여 Base 인터페이스를 구현할 수 있습니다. interface Base { fun print() } class BaseImpl(val x: Int) : Base { override fun print() { print(x) } } class Derived(b: Base) : Base by b fun main() { val b = BaseImpl(10) Derived(b).print() } Derived의 .. 코틀린의[Kotlin] Scope 함수 Scope functions 코틀린 표준 라이브러리에는 객체 컨텍스트 내에서 코드 블록을 실행하는 것이 유일한 목적인 여러 함수가 포함되어 있습니다. 람다 표현식이 제공된 객체에서 이러한 함수를 호출하면 임시 범위가(scope) 형성됩니다. 이 범위에서는 이름 없이 객체에 접근할 수 있습니다. 이러한 기능을 scope functions이라고 합니다. let, run, with, apply, also의 다섯 가지가 있습니다. 기본적으로, 이 함수들은 동일한 역할을 합니다: 객체에 코드 블럭을 실행하는 것입니다. 다른 점은, 이 객체를 어떤 방식으로 블럭 안에서 사용할 수 있는지, 그리고 전체 표현식(expression)의 결과가 어떻게 되는지입니다. 아래는 전형적인 scope function의 사용법입니다.. 코틀린[Kotlin] Collections에서 자주 사용하는 함수 알아보기 (Filter, map, count, groupby ....) 지난번에 코틀린 collections에 대해 알아본 것에 이어서 컬렉션에서 자주 사용하는 함수들에 대해 알아보겠습니다. 함수들에 대해서 알면 알수록 개발이 편해지는 것 같습니다. 이런 상황에선 이걸 쓰고, 저런 상황에서는 저걸 쓰고 등등등 filter Filter 함수를 사용하면 컬렉션을 필터링할 수 있습니다. 필터는 컬렉션의 각 요소에 적용됩니다. 조건을 true로 만드는 값 들이 결과 컬렉션에 담겨 반환됩니다. val numbers = listOf(1, -2, 3, -4, 5, -6) // 1 val positives = numbers.filter { x -> x > 0 } // 2 val negatives = numbers.filter { it < 0 } // 3 숫자 컬렉션을 정의합니다. 양수를 .. 코틀린[Kotlin] 컬렉션(Collections) 알아보기 (List, Map, Set ...) 이번에는 코틀린의 컬렉션에 대해서 알아보겠습니다. 컬렉션에는 일반적으로 동일한 타입의 여러 객체를 담을 때 사용합니다. 예를 들어, 한 부서의 모든 개발자의 평균 연령을 계산하는 데 사용할 수 있는 컬렉션을 구성할 수 있습니다. 다음 컬렉션 타입들이 Kotlin과 관련이 있습니다. List 리스트는 위치를 반영하는 정수인 인덱스로 데이터에 접근할 수 있는 순서가 있는 컬렉션입니다. 데이터는 리스트에서 두 번 이상 나타날 수 있습니다. 리스트의 예는 전화번호입니다. 전화번호 부는 번호들의 그룹이고, 번호들의 순서가 중요하며, 번호가 반복될 수 있습니다. Kotlin에서 리스트는 변경 가능할 수 있거나(MutableList) 읽기 전용(List)일 수 있습니다. 리스트 생성을 위해 읽기 전용 리스트에는 표준.. 코틀린[Kotlin] 함수형 프로그래밍 (고차 함수, 람다 함수, 확장 함수) 이번엔 함수형 프로그래밍을 코틀린에서 어떻게 사용할 수 있는지 알아보겠습니다. 고차 함수 (Higher-Order Functions) 고차 함수는 다른 함수를 매개변수로 취하거나 함수를 반환하는 함수입니다. 일급 객체란? Kotlin 함수는 일급 객체(First-class citizen)입니다. 아래 3가지 조건을 충족한다면 1급 객체라고 할 수 있습니다. 변수나 데이터에 할당할 수 있어야 한다. 객체의 인자로 넘길 수 있어야 한다. 객체의 리턴값으로 반환할 수 있어야 한다. 함수를 매개변수로 사용하기 fun calculate(x: Int, y: Int, operation: (Int, Int) -> Int): Int { // 1 return operation(x, y) // 2 } fun sum(x: I.. 코틀린[Kotlin] 특별한 클래스들 (Data, Enum, Sealed Classes And Object) 이번엔 코틀린에서 지원하는 특별한 클래스들에 대해서 다뤄볼 것입니다. 코틀린 공식문서를 참고해 작성했습니다. Data Classes 데이터 클래스를 사용하면 값을 저장하는 데 사용되는 클래스를 쉽게 만들 수 있습니다. 이러한 클래스에는 복사하기(copy), 문자열 표현 가져오기(toString) 및 컬렉션의 인스턴스 사용을 위한 메서드가 자동으로 제공됩니다. data class User(val name: String, val id: Int) { // 1 override fun equals(other: Any?) = other is User && other.id == this.id // 2 } fun main() { val user = User("KimSo", 1) // User(name=KimSo, id.. 코틀린[Kotlin] 흐름 통제하기 (When, Loop, Ranges, Equality, Contidional ..) 코틀린으로 반복문, 조건문 등을 어떻게 사용하는지 알아보겠습니다~! 코틀린 공식 문서를 참고했습니다. When 자바에서서 사용되는 switch문 대신에 Kotlin은 When으로 구성할 수 있습니다. When을 선언문이나 표현식으로 사용할 수 있습니다. When 선언문 fun main() { cases("Hello") cases(1) cases(0L) cases(MyClass()) cases("hello") } fun cases(obj: Any) { when (obj) { // 1 1 -> println("One") // 2 "Hello" -> println("Greeting") // 3 is Long -> println("Long") // 4 !is String -> println("Not a stri.. 코틀린[Kotlin] 기본 문법 2 (클래스, 제너릭, 상속) 코틀린 기본 문법 1편에 이어 이번엔 객체지향 프로그래밍의 기본인 클래스, 제너릭, 상속을 코틀린에서 어떻게 사용하는지 알아보겠습니다. 코틀린 공식 문서를 참고했습니다. 클래스 (Classes) 클래스 선언은 클래스 이름, 클래스 헤더(유형 매개변수 지정, 기본 생성자 등) 및 클래스 본문으로 구성되며 중괄호로 둘러싸여 있습니다. 헤더와 본문은 모두 선택 사항입니다. 클래스에 본문이 없으면 중괄호를 생략할 수 있습니다. class Customer // 1 class Contact(val id: Int, var email: String) // 2 fun main() { val customer = Customer() // 3 val contact = Contact(1, "mary@gmail.com") // .. 이전 1 2 3 다음