对于scala函数中的循环不匹配

时间:2014-05-23 03:28:16

标签: scala for-loop

我阅读了有关如何在scala中编写for循环的教程,但它似乎没有用。

object Main {
    def pascalTriangle(rows:Int):List[Int]= {
    var previousRow:List[Int] = Nil 
    var row:List[Int] = Nil
    for(i <- 1 to rows) {
        for( j <- 1 to i+1){
            if (j == 1 || j == i)
                row :+ 1
            else
                row :+ previousRow(j) + previousRow(j - 1)
            }
            previousRow = row
            println (row)
            row = Nil
        }
    }
     def main(args: Array[String]) {
        pascalTriangle(6)
     }
}

我在for循环的条件下一直遇到类型不匹配错误。

1 个答案:

答案 0 :(得分:1)

您的方法pascalTriangle被声明为返回List [int]。

但是,方法体中的最后一个表达式是外部for循环。这是表达式将返回值的表达式。

for-loops(不使用yield关键字)求值为():Unit,与预期的返回类型存在类型不匹配(没有yield的for循环仅用于副作用)。

如果你想,例如,返回行,你需要在外部for循环之后简单地在方法的末尾写'row'。