0

基本的に私はこれをしたい:

val germanTranslation = translations.find(t => t.lang.equals("de")).get.value

ただし、そのような変換がない可能性があります-> findはNoneを返し、get呼び出しは例外をスローします。

したがって、getOrElseを使用するのが適切なようです。しかし、それがどのように機能するかわかりません。何かのようなもの:

val englishTranslation = translations.find(t => t.lang.equals("en")).getOrElse("")

これには2つの問題があります-getOrElse("")翻訳または文字列を返そうとしていますが、これは正しくありません。必要なのは翻訳の値(文字列)です-翻訳オブジェクトではありません。

何か助けはありますか?ありがとう

4

3 に答える 3

6

新しい答えはありませんが、ここではまだ言及されていないためです。

2.10以降、構成は次のOption#map . Option#getOrElseように置き換えることができますOption#fold

val englishTranslation =
  translations.find(t => t.lang.equals("en")).fold("")(_.value)
于 2013-02-03T19:53:30.083 に答える
4

を使用Option.mapして、翻訳オプションを文字列オプションにマップgetOrElseし、結果のOption[String]:で使用できます。

val englishTranslation = translations
    .find(t => t.lang.equals("en"))
    .map(_.value)
    .getOrElse("")
于 2013-02-03T17:34:29.397 に答える
2

マップ操作を使用して、オプション内の値を取得できます。

translations.find(t => t.lang.equals("en"))
            .map(_.value) // will get translation value if there is Some, 
                          // return None otherwise
            .getOrElse("")
于 2013-02-03T17:34:07.643 に答える