在Groovy语言中,检查null或更false喜欢它非常简单:
常规代码:
def some = getSomething()
if(some) {
// do something with some as it is not null or emtpy
}
Run Code Online (Sandbox Code Playgroud)
在Groovy中,如果some是null或是空字符串或是零数字等将评估为false.在Scala中null或falseScala 中测试的类似简洁方法是什么?这部分问题的简单答案是什么,假设some只是Java类型的String?
另外一个更好的方法是groovy:
def str = some?.toString()
Run Code Online (Sandbox Code Playgroud)
这意味着如果some不是null,则toString在方法some将被调用,而不是在壳体投掷NPE some是null.Scala有什么相似之处?
我在MessageQueue.scalascala 2.7.7 的内置类中看到,在第164行附近,它是:
def extractFirst(p: Any => Boolean): MessageQueueElement = {
changeSize(-1) // assume size decreases by 1
val msg = if (null eq last) null
else {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我不太了解val msg = if (null eq last) null,为什么使用eq,但不是null.如果我写if (last==null) null,是否正确?有什么区别吗?