简体   繁体   English

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

[英]Scala type mismatch error in for loop

I'm trying to write a reverse method in Scala that takes a list and returns the reverse. 我正在尝试在Scala中编写一个反向方法,它接受一个列表并返回相反的方法。 I have: 我有:

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)))
  }
}

But when I try to compile, I'm getting: 但是当我尝试编译时,我得到:

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

The List "list" was declared to be of type List[Int]. 列表“列表”被声明为List [Int]类型。 Why is it being recognized as type Unit? 为什么它被识别为单位类型?

Add reversed after the for loop. 在for循环后添加reversed In Scala the last line in a function is the return value. 在Scala中,函数的最后一行是返回值。 The for (i <- list){...} returns Unit . 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)))
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM