2014-03-06 52 views
2

當通過地圖迭代,像這樣:爲什麼Scala地圖在用foreach迭代時會打印額外的值?

val powers = Map("Spark man" -> "Electricity", "Bubble man" -> "Fires Bubbles", "Guts man" -> "No idea") 
println(powers.size) 
println(powers.foreach(man => println(man._1 + " -> " + man._2))) 

爲什麼它似乎產生這樣打印時第四項:

3 
Spark man -> Electricity 
Bubble man -> Fires Bubbles 
Guts man -> No idea 
() 

隨着最後一行是部分困惑我的牙套。你可能會說我對這門語言很陌生,所以它可能很簡單,但我似乎無法找到與此有關的任何東西。

+0

加上一個泡泡的人,但我仍然好奇膽量的人。這是膽量的男人真的膽敢一個人的大腦*,讓他留下*不知道*? 「鮑勃,你覺得這個怎麼樣?」 「我不知道。」 「OMG,他們砍掉了他的*腦*!」順便說一句,在REPL(aka'scala')上嘗試一下例子,它會爲你打印(REPL中的P)。 –

回答

4

powers.foreach(man => println(man._1 + " -> " + man._2)返回類型的值Unit - 此值顯示爲()

您打印此值,以及每對中的地圖,讓你的代碼實際上是相同的

val u: Unit = powers.foreach(man => println(man._1 + " -> " + man._2) 
println(u) 
5

你必須在最後一行2的println

println(powers.foreach(man => println(man._1 + " -> " + man._2))) 

println正在打印3條人線和外一個正在打印()

+1

斑點!我想我看不到這棵樹上的樹木。李的解釋稍微好一點,所以我會接受他的回答,但我會投你一票。 –

+0

謝謝!是的,我同意李的回答非常好。 –

相關問題