给定函数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 main(){
result(10,3,::multiplication)// pass function as parameter wow kotlin amazing
}
fun multiplication(first:Int,second:Int):Int{
return first*second
}
fun result(firstOne:Int,secondOne: Int,fn:(Int,Int)->Int){
val result=fn(firstOne,secondOne)
print(result)
}
Jason Minard的回答很好。这也可以使用lambda来实现。
fun foo(m: String, bar: (m: String) -> Unit) {
bar(m)
}
val buz = { m: String ->
println("another message: $m")
}
可以用foo("a message", buz)调用。
您还可以使用类型别名使其更加DRY。
typealias qux = (m: String) -> Unit
fun foo(m: String, bar: qux) {
bar(m)
}
val buz: qux = { m ->
println("another message: $m")
}