Являются ли функции экземпляра в Kotlin? - PullRequest
0 голосов
/ 01 декабря 2018

Я читал документацию Kotlin о лямбде и пришел к строке, которая говорит:

Чтобы вызвать метод fold, нам нужно передать ему экземпляр типа функции в качестве аргумента

И это дало мне два основных вопроса.

  1. Что такое экземпляр функции (или тип функции)

  2. Как функции (тип функции) могут иметь экземпляр

Мне нигде не удалось найти ответ, пожалуйста, помогите.

1 Ответ

0 голосов
/ 01 декабря 2018
  1. Что такое экземпляр функции (или тип функции)

Тип функции описывается как (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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...