【发布时间】:2021-01-11 22:31:02
【问题描述】:
在 Kotlin 中,当您编写类似的东西时
if (true) {
doStuff()
}
{} 实际上是一个 lambda 表达式,而不是一个块?因此,您可以将if 视为一个函数,该函数将 lambda 作为第二个参数,并在其第一个参数为真时执行它(伪代码):
fun if(checkIfThisIsTrue: Boolean?, runThisLambdaIfTheFirstArgIsTrue: (T) -> T)
让我想起 Ruby 没有算术,2 + 3 实际上是2.+(3) 的语法糖,其中+ 是名为2 的对象上的方法名称。 Kotlin 是否也以这种方式设计(例如 {} always 表示 lambda),还是 {} 不表示 lambda?
【问题讨论】:
-
2+3在 Kotlin 中确实是2.plus(3),乘法、除法和减法也是如此。a += 3也是a.plusAssign(3)以及更多前面带有operator关键字的方法。但我很重要很确定if不是 lambda 接受函数。如果您在操作员/函数调用站点上执行Ctrl+leftclick,您可以看到这一点。
标签: kotlin