6

リストを取り、逆を返す逆メソッドを 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] 型であると宣言されました。ユニット型として認識されているのはなぜですか?

4

1 に答える 1

6

reversedfor ループの後に追加します。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)))
  }
}
于 2012-10-31T22:40:22.240 に答える