大家都在吐槽 Kotlin 没有三目运算符!这个从 C 语言就开始的经典运算符还真是能让那么古老的的代码写得如有神助,所以宝宝表示不开心!

Kotlin 官方的人说了,我们有 if else 表达式呀,三目运算符真的很需要么?

在 Java 中:

1
int a = b > 0 ? b : 0
1
val a = if(b > 0) b else 0

看上去也还行啊。

可是众开发者还是觉得少了三目运算符就好像少了什么,仍旧表示不开心。。。

于是,有人说,壮哉我大 Kotlin,没有三目运算符没关系呀,我们有三块钱表达式!!

1
val a = (b > 0) 问号 b 冒号 0

我去,这是什么鬼!实现如下:

1
2
3
infix fun <T> Boolean.问号(value: T?) = 三块钱表达式(this, value)
class 三块钱表达式<T>(val value: Boolean, val valueForTrue: T?)
infix fun <T> 三块钱表达式<T>.冒号(valueForFalse: T?) = if(value) valueForTrue else valueForFalse

我去,哥你太有才了,居然能写出这样的神代码~

BTW,这玩意儿还真得能用,谁想要?

如果你有兴趣加入我们,请直接关注公众号 Kotlin ,或者加 QQ 群:162452394 联系我们。