2014-05-23 24 views
0

我閱讀了關於如何在scala中編寫for循環的教程,但它似乎不起作用。For scala函數中的循環不匹配

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循環的條件中出現類型不匹配的錯誤。

+3

你有一個List [Int]的返回類型。但你實際上是返回單位。 – 757071

回答

1

您的方法pascalTriangle被聲明爲返回List [int]。

但是,該方法正文中的最後一個表達式是您的外部for-loop。這是表達式的值將由方法返回。

至於循環(不使用yield關鍵字)評估爲():單位,與期望的返回類型存在類型不匹配(for-loops沒有yield僅用於副作用) 。

如果你想要,例如,返回行,你需要在方法的末尾,在外部的for循環後面寫'row'。