Dev/Kotlin 15

[kotlin] Loop 문 사용 Tip

코틀린 반복문 Kotlin 언어의 Loop 문 사용하는 방법입니다. class Test { private val fruits = listOf("Apple", "Banana", "Cherry") @Test fun `Loop - 전통(?)적인 방식 사용`() { for (index in 0 .. fruits.size -1) { val fruit = fruits[index] println("$index: $fruit") } } @Test fun `Loop - until 사용`() { for (index in 0 until fruits.size) { val fruit = fruits[index] println("$index: $fruit") } } @Test fun `Loop - lastIndex 사용`() {..

Dev/Kotlin 2022.03.25

Kotlin 기본 개념 정리

Kotlin 기본 개념 정리를 시작해 합니다. 일단, 코틀린의 핵심 함수 Scope functions - let, run, with, apply, also. 유용한 함수에 대한 자세한 설명은 코틀린 사이트에서 잘 나와있다. kotlinlang.org/docs/scope-functions.html Scope functions - Help | Kotlin kotlinlang.org 간단하게 정리해보면, 리턴 값의 차이라고 생각합니다. - 람다 결과를 리턴 값으로 받는 let, run, with - 해당 객체 자체를 리턴 값으로 받는 apply, also 간단한 사용 방법 - Null이 아닌 객체 실행 : let val str: String? = "Hello" //processNonNullString(str)..

Dev/Kotlin 2021.03.12

코틀린 - 고차 함수: 파라미터와 반환 값으로 람다 사용 (요약)

8장 고차 함수: 파라미터와 반환 값으로 람다 사용 (요약) - 함수 타입을 사용해 함수에 대한 참조를 담는 변수나 파라미터나 반환 값을 만들 수 있다.- 고차 함수는 다른 함수를 인자로 받거나 함수를 반환한다. 함수의 파라미터 타입이나 반환 타입으로 함수 타입을 사용하면 고차 함수를 선언할 수 있다.- 인라인 함수를 컴파일할 때 컴파일러는 그 함수의 본문과 그 함수에게 전달된 람다의 본문을 컴파일한 바이트코드를 모든 함수 호출 지점에 삽입해준다. 이렇게 만들어지는 바이트코드는 람다를 활용한 인라인 함수 코드를 풀어서 직접 쓴 경우와 비교할 때 아무 부가 비용이 들지 않는다.- 고차 함수를 사용하면 컴포넌트를 이루는 각 부분의 코드를 더 잘 재사용할 수 있다. 또 고차 함수를 활용해 강력한 제네릭 라이브..

Dev/Kotlin 2018.10.17

코틀린 - 연산자 오버로딩과 기타 관례 (요약)

7장 연산자 오버로딩과 기타 관례 - 코틀린에서는 정해진 이름의 함수를 오버로딩함으로써 표준 수학 연산자를 오버로딩할 수 있다. 하지만 직접 새로운 연산자를 만들 수는 없다.- 비교 연산자는 equals 와 compareTo 메소드로 변환된다.- 클래스에 get, set, contains 라는 함수를 정의하면 그 클래스의 인스턴스에 대해 [] 와 in 연산을 사용할 수 있다고, 그 객체를 코틀린 컬렉션 객체와 비슷하게 다룰 수 있다.- 미리 정해진 관례를 따라 rangeTo, iterator 함수를 정의하면 범위를 만들거나 컬렉션과 배열의 원소를 이터레이션할 수 있다.- 구조 분해 선을을 통해 한 객체의 상태를 분해해서 여러 변수에 대입할 수 있다. 함수가 여러 값을 한꺼번에 반환해야 하는 경우 구조 분..

Dev/Kotlin 2018.10.09

코틀린 - 코틀린 타입 시스템 (요약)

6장 코틀린 타입 시스템 - 코틀린은 널이 될 수 있는 타입을 지원해 NullPointerException 오류를 컴파일 시점에 감지할 수 있다.- 코틀린의 안전한 호출(?.), 엘비스 연산자(?:), 널 아님 단언(!!), let 함수 등을 사용하면 널이 될 수 있는 타입을 간결한 코드로 다룰 수 있다.- as? 연산자를 사용하면 값을 다른 타입으로 변환하는 것과 변환ㄴ이 불가능한 경우를 처리하는 것을 한꺼번에 편리하게 처리할 수 있다.- 자바에서 가져온 타입은 코틀린에서 플랫폼 타입으로 취급된다. 개발자는 플랫폼 타입을 널이 될 수 있는 타입으로도, 널이 될 수 없는 타입으로도 사용할 수 있다.- 코틀린에서는 수를 표현하는 타입(Int 등)이 일반 클래스와 똑같이 생겼고 일반 클래스와 똑같이 동작한다..

Dev/Kotlin 2018.09.30

코틀린 - 코틀린 타입 시스템 (정리)

코틀린 타입 시스템 (Kotlin In Action) - 코틀린의 타입 시스템은 코드의 가독성을 향상시키는 데 도움이 되는 몇 가지 특성을 제공한다.- 널이 될 수 있는 타입, 읽기 전용 컬렉션 ? - fun strLen(s: String) = s.length 일 경우, 해당 함수가 널과 문자열을 인자로 받을 수 있게 하려면 타입 이름 뒤에 물음표를 명시해야 한다. fun strLen(s: String?) ?. - 안전한 호출 연산자 -> null 검사와 메소드 호출을 한 번의 연상으로 수행하게 도와준다. ?: - 엘비스 연산자 -> null 대신 사용할 디폴트 값을 지정할 때 편리하게 사용 fun foo(s: String?) { val t: String = s ?: " " } as? - 안전한 캐스트 ..

Dev/Kotlin 2018.09.30

코틀린 - 람다로 프로그래밍(요약)

5장 람다로 프로그래밍 - 람다를 사용하면 코드 조각을 다른 함수에게 인자로 넘길 수 있다.- 코틀린에서는 람다가 함수 인자인 경우 괄호 밖으로 람다를 빼낼 수 있고, 람다의 인자가 단 하나뿐인 경우 인자 이름을 지정하지 않고 it 이라는 디폴트 이름으로 부를 수 있다.- 람다 안에 있는 코드는 그 람다가 들어있는 바깥 함수의 변수를 읽거나 쓸 수 있다.- 메소드, 생성자, 프로퍼티의 이름 앞에 ::을 붙이면 각각에 대한 참조를 만들 수 있다. 그런 참조를 람다 대신 다른 함수에게 넘길 수 있다.- filter, map, all, any 등의 함수를 활용하면 컬렉션에 대한 대부분의 연산을 직접 원소를 이터레이션하지 않고 수행할 수 있다.- 시퀀스를 사용하면 중간 결과를 담는 컬렉션을 생성하지 않고도 컬렉..

Dev/Kotlin 2018.09.27

코틀린 - 클래스, 객체, 인터페이스(요약)

4장 클래스, 객체, 인터페이스 - 코틀린의 인터페이스는 자바 인터페이스와 비슷하지만 디폴트 구현을 포함할 수 있고, 프로터티도 포함할 수 있다.- 모든 코틀린 선언은 기본적으로 final이며, public 이다.- 선언이 final이 되지 않게 만들려면(상속과 오버라이딩이 가능하게 하려면) 앞에 open을 붙여야 한다.- internal 선언은 같은 모듈 안에서만 볼 수 있다.- 중첩 클래스는 기본적으로 내부 클래스가 아니다. 바깥쪽 클래스에 대한 참조를 중첩 클래스 안에 포함시키려면 inner 키워드를 중첩 클래스 선언 앞에 붙여서 내부 클래스로 만들어야 한다.- sealed 클래스를 상속하는 클래스를 정의하려면 반드시 부모 클래스 정의 안에 중첩 클래스로 정의해야 한다.- 초기화 블록과 부 생성자를..

Dev/Kotlin 2018.09.25