2017-11-21 9 views
1

マップの初期作成時にマップに存在する場合は追加できますか、またはvalを作成した後に.copyを実行する必要がありますかm?最初の作成時にマップに存在するOptionパラメータを追加する

def doAbc(a: String, b: String, c: String, d: Option[Int]): Unit = { 
    val m = Map(
    "a" -> a, 
    "b" -> b, 
    "c" -> c 
) 

    someService.doBLank(m) 
} 
+0

あなたは 'Map [String、String]'を構築しているようですが、あなたの 'd'パラメータは' Option [Int] 'です。 'Int'はあなたの' Map'にどのようにフィットしますか? – jwvh

答えて

3

最もクリーンなアプローチは、おそらくこの

def doAbc(a: String, b: String, c: String, d: Option[Int]): Unit = { 
    val m = Map(
    "a" -> a, 
    "b" -> b, 
    "c" -> c 
) ++ d.map("d" -> _) 

    someService.doBLank(m) 
} 

すなわちのようなものです。 mapにはタプルのトラバーサブルを追加する関数があるのでしかし、これは最初の作成時には技術的に作成されませんが、あなたの質問の目標に合っていると思います。

+1

それは '(" d " - > _)'(何とか私は編集できません)と読むべきです。 .toListが必要なのかどうか分からない – Ossip

+0

あなたが正しいと思う、toListは必要ない。 – Ren

関連する問題