Данная функция foo:
fun foo(m: String, bar: (m: String) -> Unit) {
bar(m)
}
Мы можем сделать:
foo("a message", { println("this is a message: $it") } )
//or
foo("a message") { println("this is a message: $it") }
Теперь предположим, что у нас есть следующая функция:
fun buz(m: String) {
println("another message: $m")
}
Есть ли способ передать «buz» в качестве параметра «foo»? Что-то вроде:
foo("a message", buz)
fun something() { foo("hi", { buz(it) }) }
this::function
bar: ((m: String) -> Unit)?
m
предназначен для foo, другой параметр - это имя параметра типа функции, переданное функции в переменной bar.О функции-члене как параметре:
код:
источник
Котлин 1.1
использовать
::
для справки.лайк
источник
Просто используйте "::" перед именем метода
foo(::bar)
Выход :Hello World
источник
очевидно, это еще не поддерживается.
больше информации:
http://devnet.jetbrains.com/message/5485180#5485180
http://youtrack.jetbrains.com/issue/KT-1183
источник
Если вы хотите передать сеттер и геттер методы.
Использование:
источник
Ответ Джейсона Минарда хороший. Этого также можно добиться с помощью файла
lambda
.Что можно назвать с помощью
foo("a message", buz)
.Вы также можете сделать его более СУХИМ, используя файл
typealias
.источник
Другой пример:
источник
Первоклассные функции в настоящее время не поддерживаются в Kotlin. Были споры о том, стоит ли добавить эту функцию. Я лично считаю, что должны.
источник