2017-04-25 5 views
1

私が働くScalaでは、次のコードを持っている:プレースホルダ

var queryMap = Map("name" -> "tim") 
age_list.foreach { age => queryMap += ("age" -> age.toString) } 

私は関数内のプレースホルダが含まれている場合、それが壊れる:

var queryMap = Map("name" -> "tim") 
age_list.foreach { queryMap += ("age" -> _.toString) } 

次のエラー

value += is not a member of scala.collection.immutable.Map[String,String] 

queryMapは、変更可能なマップの代わりに不変のマップになります。構文構造に何か問題はありますか?

答えて

4

_私はこのエラーを再現することはできません、私は別のものを得る:

error: missing parameter type for expanded function ((x$1: <error>) => "age".$minus$greater(x$1.toString)) 

アンダースコアがforeachに、しかし+=後にバインドされていないことを意味しています。アンダースコアは、括弧の中にあれば、その中にバインドされます。したがって、それらを削除することができ、それは動作します。

var queryMap = Map("name" -> "tim") 
age_list.foreach { queryMap += "age" -> _.toString } 
+0

ブリリアント。私はそれが括弧にタグ付けされたことを認識していませんでした –