2016-04-17 5 views
1

("en",(20340,302))(タプルの文字列とタプル:(String, (Int, Int)))を次のようなデータにマップしようとしています:(String, Int/Int)("en", 67)となります)。これの構文は何ですか?Scala Spark - タプルの値を単精度にマッピングする

val new = old.map(a,(b,c) => (a, b/c))

は、私は、しかし働いていないんしようとしたものです。

答えて

1
val new = old.map { case (a,(b,c)) => (a, b/c) } 

のためにシンタックスシュガーです:

val new = old.map(t => t match { 
    case (a,(b,c)) => (a, b/c) 
}) 

または醜いバージョン:

val new = old.map(t => (t._1, t._2._1/t._2._2)) 
+0

ありがとうございます!これは機能します。 'case'キーワードは正確に何をしますか? –

+0

明示的に編集されました - caseキーワードは_pattern matching_構文の一部ですが、匿名関数の単一入力引数に適用すると 'match'キーワードは省略できます –

関連する問題