Scala Intellij 建议用非空替换大小检查,但为什么呢?

标签 scala intellij-idea

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/

相关文章:

scala - 如何确保 Play! 中文件上传的安全框架(斯卡拉)

scala - 通过在 Scala 3 中解包类型将 case 类转换为另一个

kotlin - 抑制 Intellij 中公共(public) API 函数的 "unused"警告(对于 Kotlin)

android - Intellij : android-support-v4. jar 包含在 actionBarSherlock 和 Project => IllegalArgumentException 中

java - IntelliJ IDE 在将 Try-Catch 与资源一起使用时出错

scala - 高级类型与泛型

scala - Scala中列表的局部最大值

scala - 在 Scala 中定期运行一个函数

Kotlin 让绘图 : minimal example

java - 如何显示使用 JUnit 运行的 Spring Test MVC 测试的完整堆栈跟踪