2011-06-15 88 views
74

我有斯卡拉地圖:如何迭代scala地圖?

attrs: Map[String , String] 

當我嘗試遍歷地圖等;

attrs.foreach { key, value =>  } 

以上不起作用。在每次迭代中,我都必須知道什麼是關鍵,什麼是價值。使用scala語法糖遍歷scala映射的正確方法是什麼?

回答

69

foreach方法接收Tuple2[String, String]作爲參數,而不是2個參數。所以,你可以使用它像元組:

attrs.foreach {keyVal => println(keyVal._1 + "=" + keyVal._2)} 

,或者你可以讓模式匹配:

attrs.foreach {case(key, value) => ...} 
+5

看看雷克斯的回答,更好的選擇有 – iwein 2013-04-03 14:04:57

136

三個選項:

attrs.foreach(kv => ...)   // kv._1 is the key, kv._2 is the value 
attrs.foreach{ case (k,v) => ... } // k is the key, v is the value 
for ((k,v) <- attrs) { ... }  // k is the key, v is the value 

訣竅是,迭代給你鍵值對,你不能分裂成鍵和值標識符名稱,而不使用任何或casefor