【发布时间】:2010-12-09 05:17:54
【问题描述】:
@lucastex posted 关于 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?如果新的结构类型不为空,则应该返回任何东西的初始值,即上述代码中的"Paulo"。
我有点困惑。有什么解释吗?
【问题讨论】: