如何让这个方法发挥作用?
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/