問題

我有一個字串陣列:

 val str:Array[String] = Array("aa","bb")
scala> str.foreach(println) // works
aa
bb
scala> str.foreach(println()) // println() also returns a Unit, doesn't it?
                          ^
error: type mismatch;
found   : Unit
required: String => ?
 

為什麼str.foreach(println)沒有問題,但str.foreach(println())沒有?
2001年12月31日終了的兩年期收入和支出及準備金和基金結餘變動報表 println等於println()返回Unit值嗎?

  最佳答案

println是一種方法(可轉換為函式),它接受輸入(本例為String)併產生結果(Unit)和側面效果(列印到StdOut).

println() 是指呼叫一種沒有輸入的方法,產生一個結果(Unit)和一個側面效果( to StdOut)。

它們不一樣。

第二個不適用於foreach(),因為foreach()向其引數提供元素(本例中的字串),println()不會獲取foreach()提供的輸入.

這將工作str.foreach(_ => println()),因為underscore-short(_ =>)說:“Ignore輸入.只需丟擲它並呼叫以下內容.”

  相同標籤的其他問題

scalaeta-expansion