if (cubeNames.size > 0) {
//Do something
}
Intellij 建议将其替换为:
if (cubeNames.nonEmpty) {
//Do something
}
现在函数 nonEmpty 定义为:
def nonEmpty: Boolean = !isEmpty
调用另一个函数!
这一切真的有必要并且在实用性方面有效吗?
最佳答案
.size
需要遍历整个集合来确定其大小,而.isEmpty
只需找到一个元素即可返回false
.
对于小型收藏可能不会太重要(但您仍然应该这样做)。但是,对于庞大的集合,会有很大的不同。
更糟糕的是,如果集合是无限的(例如 val s:Stream[Int] = 0 #::s
),那么 .size
将永远不会终止,而.isEmpty
会。
关于Scala Intellij 建议用非空替换大小检查,但为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31979945/