是否可以在when语句中使用infix函数。与此类似:
infix fun Int.isGreater(value: Int): Boolean = this > value
然后:
when (value) {
isGreater 2 -> doSomething()
isGreater 1 -> doSomethingElse()
else -> doNothing()
}
答案 0 :(得分:0)
您不能像您一样调用infix函数。它总是需要在左侧的接收器:
when {
value isGreater 2 -> doSomething()
value isGreater 1 -> doSomethingElse()
else -> doNothing()
}
请注意,中缀函数始终都需要同时指定接收方和参数。当您使用后缀符号在当前接收方上调用方法时,您需要显式使用此方法。与常规方法调用不同,它不能被忽略。
答案 1 :(得分:0)
实际上:不,这不起作用。在查询when
grammar时可以看到原因,该查询不具有接受when
的值并在其上调用whenCondition
的函数的构造。因此,它与infix
本身无关(确实,它的左边需要一个接收器)。
您可以执行以下操作:
when {
value isGreater 2 -> ...
value.isGreater(1) -> ...
如果愿意,您还可以在Kotlin reference中阅读有关when
的更多信息。