假设我有
fun getRealGrade(x: Double) = x
fun getGradeWithPenalty(x: Double) = x - 1
fun getScoringFunction(isCheater: Boolean): (Double) -> Double {
if (isCheater) {
return ::getGradeWithPenalty
}
return ::getRealGrade
}
(Double) -> Double
在getScoringfunction
中有什么用途?
如果我不理解语法,请更正我的isCheater
val在这里是布尔值,函数返回double,但这个(Double)
做什么?
我得到的是:
fun sayHello() {
println("Hello")
}
在本例中sayHello
具有一种类型的() -> Unit
函数不返回(Double)
,而是返回(Double) -> Double
,即返回函数。它返回的函数取一个double并返回一个double。
你会像这个一样使用它
fun main() {
val scoreFunction: (Double) -> Double = getScoringFunction(true); // returns the cheater scoring function
val score = scoreFunction(10) // score = 9, they were graded with penalty
}
在第二个示例中,返回类型为Unit
。在Kotlin中,一个不返回值的函数被称为返回Unit
,一个单例对象。() -> Unit
是一个函数,它不接受任何参数,也不返回任何值。