函数引用为对象Kotlin



假设我有

fun getRealGrade(x: Double) = x
fun getGradeWithPenalty(x: Double) = x - 1
fun getScoringFunction(isCheater: Boolean): (Double) -> Double {
if (isCheater) {
return ::getGradeWithPenalty
}
return ::getRealGrade
}

(Double) -> DoublegetScoringfunction中有什么用途?

如果我不理解语法,请更正我的isCheaterval在这里是布尔值,函数返回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是一个函数,它不接受任何参数,也不返回任何值。

最新更新