for循环中的Scala类型不匹配错误

时间:2012-10-31 22:32:07

标签: scala types

我正在尝试在Scala中编写一个反向方法,它接受一个列表并返回相反的方法。我有:

object Reverse {
  def reverseList(list: List[Int]): List[Int] = {
    var reversed: List[Int] = List()
    for (i <- list) {
      reversed = i :: reversed
    }
  }
  def main(args: Array[String]) {
    println(reverseList(List(1,2,3,4)))
  }
}

但是当我尝试编译时,我得到了:

example.scala:4: error: type mismatch;
 found   : Unit
 required: List[Int]
    for (val i <- list) {
               ^ 

List“list”被声明为List [Int]类型。为什么它被识别为单位?

1 个答案:

答案 0 :(得分:5)

在for循环后添加reversed。在Scala中,函数的最后一行是返回值。 for (i <- list){...}会返回Unit

object Reverse {
  def reverseList(list: List[Int]): List[Int] = {
    var reversed: List[Int] = List()
    for (i <- list) {
      reversed = i :: reversed
    }
    reversed
  }
  def main(args: Array[String]) {
    println(reverseList(List(1,2,3,4)))
  }
}