我有以下中缀有趣的
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 { ... })
一样解析,而不是相反。