中缀功能与何时 - 可能吗?

  • 本文关键字:功能 何时 中缀 kotlin
  • 更新时间 :
  • 英文 :


是否可以将中缀函数与 when 语句一起使用。类似于这样的东西:

infix fun Int.isGreater(value: Int): Boolean = this > value

然后:

when (value) {
isGreater 2 -> doSomething()
isGreater 1 -> doSomethingElse()
else -> doNothing()
}

实际上:不,这是行不通的。在查阅when语法时可以看到原因,该语法没有一个结构来获取给定when的值并在其上调用whenCondition函数。因此,它与infix本身无关(尽管它确实需要在左侧安装接收器(。

您可以执行以下操作:

when {
value isGreater 2 -> ...
value.isGreater(1) -> ...

如果您愿意,还可以在 Kotlin 参考中阅读有关when的更多信息。

不能像现在这样调用中缀函数。它总是需要在左侧有一个接收器:

when {
value isGreater 2 -> doSomething()
value isGreater 1 -> doSomethingElse()
else -> doNothing()
}

请注意,中缀函数始终需要同时指定接收器和参数。当您使用中缀表示法在当前接收器上调用方法时,您需要显式使用它;与常规方法调用不同,它不能省略。

最新更新