@lucastex发布了关于 Java Elvis 运算符的帖子,我在 Scala 中尝试了一些东西来获得相同的效果。
我刚刚将所有内容都转换为新的结构类型,?:
运算符采用与参数相同类型的对象。所以说:
implicit def toRockStar[B](v : B) = new {
def ?:(opt: => B) = if (v == null) opt else v}
val name: String = "Paulo" // example
为什么name ?: "Lucas"
得到"Lucas"
和name.?:{"Lucas"}
得到Paulo
?如果新的结构类型不为 null,即"Paulo"
在上面的代码中,它应该返回任何东西的初始值。
我有点困惑。有什么解释吗?