java - Scala foreach 返回

标签 java scala foreach return

如何让这个方法发挥作用?

def filled(b: Board): Board = {
  b.next foreach { n =>
    if (n.filled) n
    else filled(n)
  }
}

我需要它在第一次填充 n (n.filled == true) 后返回,就像在 Java 中一样。

现在我得到:

chess-knight.scala:72: error: type mismatch;
 found   : Unit
 required: this.Board
    b.next foreach { n =>
           ^
one error found

谢谢!

最佳答案

这不是你需要的吗?

def filled(b: Board): Board = b.next find {_.filled} get

假设 b.next 是一个 Seq[Board] 并且总是至少有一个 filled Board.

如果您坚持纯函数更喜欢利用模式匹配的方法而不是 List:

def filled(b: Board): Board = {
  b.next match {
    case n :: _ if(n.filled) => n
    case _ :: rest => filled(rest)
    case Nil => throw NoSuchElementException
}

关于java - Scala foreach 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943817/

相关文章:

scala - 重新解析 scala 配置对象

php - For 循环中的 If 条件

c++ - 使用 for_each 时出错

java - 非流上下文中使用java.util.Function的设计实践

java - HashMap 中的 keySet 字段为空

java - wsimport 上的 WSDL 错误

scala - elastic4s:反序列化搜索结果

java - 将 awscala 与 STS 结合使用

java - 迭代并从 ArrayList 中删除元素时如何避免 java.util.ConcurrentModificationException

java.net.UnknownHostException收获Dspace集合