Scala:谓词不包含异常

标签 scala for-loop

这个异常在 Scala 中意味着什么:

java.util.NoSuchElementException: Predicate does not hold for ...

最佳答案

导致这种情况的一种方式是,如果您有一个将 Try 与谓词( if 语句)结合在一起的 for-comprehension:

for {
  x <- Try(expr) if booleanExpr
} {
  ...
}
filter如果 booleanExpr,Try 的方法可以抛出 java.util.NoSuchElementException 以跳过循环体计算结果为 false .
reason该异常的字段是“谓词不适用......”

正如@Guillaume 在评论中指出的那样,正是 Try 的实现通过它实现 filter 的方式导致了这种情况。 -- 当您在 for comprehension 中使用条件 (if) 时由编译器调用的方法:
if (p(value)) this
else Failure(new NoSuchElementException("Predicate does not hold for " + value))

关于Scala:谓词不包含异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32752300/

相关文章:

scala - 为什么在 Play Framework 中有一个build.gradle和一个build.sbt?

scala - 如何查看akka死信

scala - Scala 中的 LazyList 和 List 有什么区别?

scala - Spark 2.3 动态分区不能在 S3 AWS EMR 5.13.0 上工作

javascript - Vue.js 当只有一个根节点时存在多个根节点

javascript - 如何迭代 jQuery 对象并等待事件?

php - while() 和 for() 有什么区别?

scala - 如何在 Play 之外使用 Anorm?

c - 加密字符串

python - import Numba @jit meet warning message and @jit(nopython=True) 将显示错误