您如何使这种方法起作用?
def filled(b: Board): Board = {
b.next foreach { n =>
if (n.filled) n
else filled(n)
}
}
我需要像Java中那样先填充n(n.filled == true)后返回它。
现在我得到:
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
}