中缀函数:如何避免在提供的参数周围使用括号



我有以下中缀有趣的

infix fun <T> Boolean.then(lazyValue: () -> T): T?
= if (this) lazyValue() else null

使用以下用例

(index > 0) then { data[index - 1].id }

我想把它重写为

index > 0 then { data[index - 1].id }

并且避免在索引>0。当前未在代码中解析。有什么办法让它发挥作用吗?

不,那行不通。

根据Kotlin Grammar参考中的运算符优先级表,中缀函数调用(如本例中的then(的优先级高于比较运算符<><=>=

因此,如果没有括号,像index > 0 then { ... }这样的表达式将像index > (0 then { ... })一样解析,而不是相反。

相关内容

  • 没有找到相关文章

最新更新