2017-01-26 55 views
0

我需要修正一些Scala代碼,當實際的電子郵件是「空的」時,應該生成一個虛擬電子郵件。在空的時候在scala中設置一個字符串

到目前爲止,它看起來像這樣:

val maybeEmail = (response.json \ "email").asOpt[String].map(_.toLowerCase) 

User(maybeEmail, ...) // User(email: Option[String], ....) 

現在,我想重置 「maybeEmail」 到: 「@ dummy-email.com」,當它是空的。

這似乎是非常微不足道的,但我已經有幾個鏡頭,無法讓它工作。 到目前爲止,我是想的東西等(沒有工作):

maybeEmail.getOrElse[String](someId.concat("@dummy-email.com")) 

所以,請支持我在此。謝謝。

+1

「不工作」是什麼意思? (具體爲:顯示異常/編譯錯誤/不良結果) –

+0

好。我嘗試了多種解決方案,都以例外結束:[error] found:java.io.Serializable [error] required:Option [String]或類似 – user3735572

+0

您是否在使用playframework和playjson? –

回答

0

我真的不明白你的問題,但讓我們試試這個小小的回答,perhap它會幫助你。

如果你想要一個字符串作爲結果,用默認值,你可以做這樣的事情:

val optMail = Some("[email protected]") 
val mail = optMail getOrElse "[email protected]" 

如果你想在結果而不是字符串的選項:

val optMail2 = Some("[email protected]") 
val mail2 = optMail2 orElse Some("[email protected]") 

看來你想要的是第二種情況。您的代碼將如下所示:

val maybeEmail = (response.json \ "email").asOpt[String].map(_.toLowerCase) orElse Some(someId.concat("@dummy-email.com")) 
User(maybeEmail, ...) // User(email: Option[String], ....) 
+0

這對我非常有幫助!乾杯! – user3735572

相關問題