Unit은 이미 만들어진 함수나 객체의 멤버함수를 참조할수도 있다.
package functionReferenceEx
fun plus(a : Int, b : Int) = println("plus calling ${a + b}")
object Object {
fun minus (a : Int, b : Int ) = println("Object minus calling ${a - b}")
}
class Class {
fun average (a : Int, b : Int ) = println("class average calling ${(a+b)/2}")
}
fun main() {
var instantFunc : (Int, Int) -> Unit
instantFunc = :: plus
instantFunc(3,7)
instantFunc= Object :: minus
instantFunc(7,3)
instantFunc = Class() :: average
instantFunc(6,8)
}
다음은 세 가지 타입의 함수를 선언했다
1. 기본 함수
2. 객체 속의 멤버 함수
3. 클래스 속의 멤버 함수
함수 앞에 :: 를 붙이면 그 함수는 참조함수가 된다. 타입은 그 함수의 시그니쳐에 맞는 함수 타입이 된다.
객체와 클래스는 클래스 명을 먼저 선언하고, 그 뒤에 함수를 참조시킨다.
결과 :
plus calling 10
Object minus calling 4
class average calling 7
반응형
'Android > 안드로이드 스터디(Kotlin)' 카테고리의 다른 글
Kotlin] 34. 제네릭 상속(in/out) (0) | 2020.12.11 |
---|---|
Kotlin] 33. 타입 매개변수 비교하기(reified) (0) | 2020.12.11 |
Kotlin] 31. 함수 리터럴 (0) | 2020.12.10 |
Kotlin] 30. 데이터 클래스 (0) | 2020.12.10 |
Kotlin] 29. 중첩 클래스 (0) | 2020.12.10 |