我有以下的收益環路發生在一個布爾值,應該要麼產生一些(字符串)或無,取決於布爾:如果我將一個選項傳遞給它,Scala是否可以返回None?
val theBoolean = false
val x: Option[String] =
for {
theArg <- theBoolean
} yield {
if (theArg) {
"abc"
} else {
None
}
}
這個偉大的工程,如果theBoolean
實際上是一個布爾像false
。但是,如果我想在傳遞一個Option[Boolean]
:
val theBoolean = Some(false)
好像斯卡拉自動應用部分()包裝到無回報 - 我收到一宗投訴,「類型選項中的表達[Serializable接口]不符合到期望的類型Option [String]「(無可序列化)。產量是完全滿意相同的字符串返回,雖然(它不會成爲一個選項[選項[字符串]
我怎麼會在這種情況下返回無?
我發現None.get實際上使編譯器高興的差異。但這樣使用它似乎很奇怪。 – Nathan 2014-11-05 00:52:28
這段代碼試圖實現什麼? – 2014-11-05 00:57:26
一個選項被傳入 - 在某些條件下,我想從中提取一個字符串,但在其他條件下,我希望它是None。 – Nathan 2014-11-05 00:59:40