1

この方法をどのように機能させますか?

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

ありがとう!

4

1 に答える 1

6

これはあなたが必要とするものではありませんか?

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

それb.nextが でSeq[Board]あり、常に少なくとも 1 つの が存在する場合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
}
于 2012-10-17T21:44:54.110 に答える