Kotlin
-
[Kotlin] 코틀린 함수와 함수형 프로그래밍 2Kotlin/Function 2021. 9. 7. 23:39
[Kotlin/Function] - [Kotlin] 코틀린 함수와 함수형 프로그래밍 1 이전 포스팅에서 함수형 프로그래밍, 일급 객체, 일급함수, 고차함수, 람다표현식의 개념에 대해 알아보았다. 이번에는 코틀린 ref를 보고 문법 내용을 정리해보려고 한다. High-Order function 고차함수의 인자로 함수타입의 인스턴스를 (instance of function type) 전달해야한다. 밑의 이미지를 보면 함수타입을 인스턴스화 하는 방법이 있다. 그중 하나인 람다표현식부터 살펴보고 능력이 되는데까지 정리해보려고 한다. 람다표현식은 고차함수에서 인자를 전달하는 목적으로 폭넓게 사용된다. 1. 람다 표현식 { } 은 항상 중괄호로 둘러져있어야 한다. { x: Int, y: Int -> x + y } ..
-
[Kotlin] 코틀린 함수와 함수형 프로그래밍 1Kotlin/Function 2021. 9. 6. 17:34
코틀린은 객체지향 프로그래밍 + 함수형 프로그래밍 언어이다. (참고-함수형프로그래밍이란) https://mangkyu.tistory.com/111 프로그래밍 언어의 함수가 일급 시민(일급 객체)으로 다뤄진다면 일급 함수를 가지고 있는 언어이다. https://choheeis.github.io/newblog//articles/2020-12/kotlinHigherOrderFunctionAndLambda 일급 객체의 특징 1. 일급 객체는 함수의 매개변수가 될 수 있다. 2. 일급 객체는 함수의 return값이 될 수 있다. 3. 일급 객체를 변수에(=) 값을 할당할 수 있다. 4. 일급 객체는 고유한 구별이 가능하다.(equaliy비교) 코틀린의 함수는 일급 함수이다-> 일급 객체의 특징을 만족한다. 1. ..
-
[Kotlin] List,Set,MapKotlin/Collection 2021. 9. 5. 16:09
2021.08.26 - [Kotlin/Collection] - [Kotlin] Collection hierachy List In Kotlin, the default implementation of List is ArrayList Two lists are considered equal if they have the same sizes and structurally equal elements at the same positions. class Person(var name:String, var age:Int) fun main() { val bob = Person("Bob", 31) val people = listOf(Person("Adam", 20), bob, bob) val people2 = listOf(P..
-
[Kotlin] by 키워드Kotlin/늦은 초기화 2021. 9. 3. 16:23
1. by를 통한 클래스의 인터페이스 구현을 다른 객체에게 위임 interface A {...} class B : A {...} class C(b : B) : A by b {...} 클래스 C는 인터페이스 A를 구현한다. 클래스 C의 인터페이스 A 구현은 b객체(B클래스)가 A를 구현한 방식으로 구현된다. 클래스 C의 인터페이스 A 구현을 b객체에게 위임한다. 인터페이스의 메서드의 경우 interface Soundable { fun sound() } class Dog : Soundable { override fun sound() { println("멍멍") } } class MyDog(dog: Dog) : Soundable by dog { } fun main() { val dog = Dog() val m..
-
[Kotlin] Collection hierachyKotlin/Collection 2021. 8. 26. 14:45
read-only interface (Mutable이 붙지 않은 것들)- element의 값을 변경 불가 mutable interface (Mutable이 붙은 것들)- element의 값을 변경 가능( 삭제,변경,추가) interface Iterable Classes that inherit from this interface can be represented as a sequence of elements that can be iterated over. https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-iterable/ interface Collection : Iterable A generic collection of elements. M..
-
[Kotlin] Extension (Function,Property)Kotlin/Function 2021. 8. 16. 18:23
Extension Function 개인참고용 확장 함수 1. fun 클래스명.확장함수명(파라메터...): 리턴타입{ 구현 } nullable한 인스턴스도 받을 수 있는 확장함수의 선언 fun 클래스명?.확장함수명(파라메터들): 리턴타입{ 구현 } 2. 조상,자손간의 메서드 오버라이딩시 호출되는 메서드와 다름 참조변수에 담긴 실제 인스턴스의 메서드가 호출되지 않고 참조변수의 타입에 해당하는 메서드가 호출됨 3. 확장함수의 시그니쳐에 해당하는 함수가 클래스의 멤버 메서드로 이미 존재하는 경우 선언한 확장함수가 아닌 멤버 메서드가 호출됨 다른 시그니쳐로 오버로딩에 해당하는 확장함수를 정의가능 4. Extension Function의 선언은 Top-level에서 하므로 패키지에 소속 접근제한자가 어떻게 설정되냐..
-
[Kotlin] object, companion objectKotlin/Class and objects 2021. 8. 16. 15:44
1. object - object expression 오브젝트 표현식은 명시적으로 class 선언을 하지 않은 채로 익명 클래스의 오브젝트를 만든다. 이러한 인스턴스들은 클래스 이름이 아닌, 표현식으로 정의되기 때문에 anonymous object라고 불린다. 일회성에 적합 클래스 바디 구조처럼 선언하고 앞에 =으로 표현식으로 정의 object expressions은 Any를 상속받는다. !!object에는 생성자가 허용되지 않는다. //공부 필요 Using anonymous objects as return and value types https://kotlinlang.org/docs/object-declarations.html#using-anonymous-objects-as-return-and-valu..
-
[Kotlin] Nothing, UnitKotlin/Types 2021. 8. 16. 15:28
인터넷의 여러 글들을 읽어봤지만 Nothing과 Unit의 차이에 대해 정확하게는 모르겠고 어떠한 식으로만 써야하는지에 대해서만 안것 같다. 이해를 위해 글의 순서가 뒤죽박죽일 수 있다. Any는 모든 타입의 조상 타입 Nothing은 모든 타입의 서브 타입 Unit은 싱글톤 인스턴스로 자바의 void를 나타낸다. 함수가 리턴되지 않을 경우 Unit대신 Nothing을 쓰자. Nothing은 모든 타입의 서브 타입 fun test(): 조상타입{ return 자손인스턴스 } 자손인스턴스는 조상타입으로 캐스팅 가능하기 때문에 컴파일 에러가 발생하지 않는다. 마찬가지로 코틀린에서 throw 표현식은 Nothing타입이다. Nothing은 모든 타입의 서브타입이기 때문에 어떠한 타입으로도 캐스팅 될 수 있다...