基本上我想这样做:
val germanTranslation = translations.find(t => t.lang.equals("de")).get.value
Run Code Online (Sandbox Code Playgroud)
但可能是没有这样的翻译 - > find将返回None,并且get调用将抛出异常.
所以似乎使用getOrElse是合适的.但不知道它会如何运作.就像是:
val englishTranslation = translations.find(t => t.lang.equals("en")).getOrElse("")
Run Code Online (Sandbox Code Playgroud)
这个有2个问题 - getOrElse("")试图返回翻译或字符串,这是不正确的,而且,我需要的是翻译的值(字符串) - 而不是翻译对象.
有帮助吗?谢谢
没有新的答案,但因为这里还没有提到:
从2.10开始,组合物Option#map . Option#getOrElse可以替换为Option#fold:
val englishTranslation =
translations.find(t => t.lang.equals("en")).fold("")(_.value)
Run Code Online (Sandbox Code Playgroud)
您可以使用Option.map将翻译选项映射到字符串选项,然后getOrElse在结果上使用Option[String]:
val englishTranslation = translations
.find(t => t.lang.equals("en"))
.map(_.value)
.getOrElse("")
Run Code Online (Sandbox Code Playgroud)