Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Scala-foreach返回_Java_Scala_Foreach_Return - Fatal编程技术网

Java Scala-foreach返回

Java Scala-foreach返回,java,scala,foreach,return,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.Boar

你是如何使这种方法起作用的

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]
,并且始终至少有一个
填充的
Board

如果您坚持纯功能性,则更喜欢利用模式匹配的方法,而不是
列表

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

这不是你需要的吗

def filled(b: Board): Board = b.next find {_.filled} get
假设
b.next
是一个
Seq[Board]
,并且始终至少有一个
填充的
Board

如果您坚持纯功能性,则更喜欢利用模式匹配的方法,而不是
列表

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

是什么让你认为你的第一个解决方案不是纯粹的功能性的?@NikitaVolkov:我的意思是
List
是根据
head
tail
定义的,模式匹配利用了这一事实。人们可以想象,
filter
也被定义为
head
tail
,因此第二种方法只使用基本的构造,而没有辅助方法,错误地使用了术语“纯功能”。这是主要问题-填充的是(n:Board):Board,而不是(n:List[Board]):板,分支中不总是有一个填充板。这类似于用骑士填充8x8国际象棋棋盘。@Etam:好的,我有点迷路了,有
filled
方法和
filled(b:board)
方法吗?它们有何不同?你能把你的问题扩大一点吗?是什么让你认为你的第一个解决方案不是纯粹的功能性的?@NikitaVolkov:我的意思是
列表
是根据
定义的,模式匹配利用了这一事实。人们可以想象,
filter
也被定义为
head
tail
,因此第二种方法只使用基本的构造,而没有辅助方法,错误地使用了术语“纯功能”。这是主要问题-填充的是(n:Board):Board,而不是(n:List[Board]):板,分支中不总是有一个填充板。这类似于用骑士填充8x8国际象棋棋盘。@Etam:好的,我有点迷路了,有
filled
方法和
filled(b:board)
方法吗?它们有何不同?你能把你的问题扩大一点吗?