如何在 Kotlin 中传递多个函数实现?
How to pass multiple function implementations in Kotlin?
阅读 Kotlin 中的 higher order functions,我看到了一种用于传递函数实现(“内联”)的语法,如下所示:
calculate(4, 5) { a, b -> a * b }
a, b -> a * b
部分其实就是函数传递给函数。完整片段:
fun calculate(x: Int, y: Int, operation: (Int, Int) -> Int): Int { // 1
return operation(x, y) // 2
}
fun sum(x: Int, y: Int) = x + y // 3
fun main() {
val sumResult = calculate(4, 5, ::sum) // 4
val mulResult = calculate(4, 5) { a, b -> a * b } // 5
println("sumResult $sumResult, mulResult $mulResult")
}
考虑拥有一个接收 2 个函数的函数,例如
fun calculate2(x: Int, y: Int, operation: (Int, Int) -> Int, operation2: (Int, Int) -> Int): Int {
//...
}
如何传递 2 个函数实现 - “内联”(无需先声明函数)?
尝试 like the following 时出现编译错误:
calculate(4, 5) { a, b -> a * b} {a, b -> a + b }
截图:
calculate(4, 5, { a, b -> a * b }, { a, b -> a + b })
或
calculate(4, 5, { a, b -> a * b }) { a, b -> a + b }
阅读 Kotlin 中的 higher order functions,我看到了一种用于传递函数实现(“内联”)的语法,如下所示:
calculate(4, 5) { a, b -> a * b }
a, b -> a * b
部分其实就是函数传递给函数。完整片段:
fun calculate(x: Int, y: Int, operation: (Int, Int) -> Int): Int { // 1
return operation(x, y) // 2
}
fun sum(x: Int, y: Int) = x + y // 3
fun main() {
val sumResult = calculate(4, 5, ::sum) // 4
val mulResult = calculate(4, 5) { a, b -> a * b } // 5
println("sumResult $sumResult, mulResult $mulResult")
}
考虑拥有一个接收 2 个函数的函数,例如
fun calculate2(x: Int, y: Int, operation: (Int, Int) -> Int, operation2: (Int, Int) -> Int): Int {
//...
}
如何传递 2 个函数实现 - “内联”(无需先声明函数)?
尝试 like the following 时出现编译错误:
calculate(4, 5) { a, b -> a * b} {a, b -> a + b }
截图:
calculate(4, 5, { a, b -> a * b }, { a, b -> a + b })
或
calculate(4, 5, { a, b -> a * b }) { a, b -> a + b }