- Что такое экземпляр функции (или тип функции)
Тип функции описывается как (Parameters) -> Result
, экземпляр которого будетлюбая функция, реализующая сигнатуру, соответствующую этому типу описания.
val function: (Int, Int) -> Int = { a, b -> a + b }
Как функции (тип функции) могут иметь экземпляр
Так же, как анонимные классы в Java, функции могут быть выражены как встроенные объекты.Например, в Java у вас будет Consumer<T>
SAM-Type (единственный абстрактный тип метода), который имеет только метод accept(T): void
.В kotlin этот тип - (T) -> Unit
, и экземпляр этого создается с использованием лямбда-выражения как var consumer: (T) -> Unit = { println(it) }
или ссылки на функцию.Затем экземпляр затем вызывается либо с помощью оператора invoke consumer(x)
, либо с помощью функции invoke consumer.invoke(x)
.