我對Scala的新手,我真的不能感覺到Java和Option
零之間的差異是感覺在斯卡拉。 我相信沒有一個是一個對象,如果我寫水木清華這樣的斯卡拉,它會安全:
val map = Map("koko" -> "is a cat")
val string:Option[String] =map.get("other")
println(string.map(a=>println(a.toString)))
我順利拿到None
結果,而不是拋出異常。 這很有趣。
但是,如果我需要返回值不被Some
包裹。我將使用.get來返回值。
在我們的例子中,它會拋出一個exceoption:
map.get("other").get.map(a=>println(a.toString))
我知道我可以通過使用「匹配」處理這個問題。 我在這裏,我需要了解什麼是在斯卡拉選項上蓬勃發展vs null在Java!
我仍然無法明白的是,我如何使用期權的優勢,但如果有存在了我的變量值,返回值不Some(value)
def testOption(): String = {
val map = Map("koko" -> "is a cat")
val string: Option[String] = map.get("koko")
string
}
我的意思是有什麼辦法使此代碼工作,而不是更新返回值爲Option[String]
! 想象一下,我不得不爲了返回一個字符串不Option[String]
我怎麼能作出這樣的作品沒有任何形式的match
被設定於我的豆變量的類型爲String! 我想如果有這樣做會使它成功,那會讓我很好地理解Option
的威力。
閱讀此:http://stackoverflow.com/questions/2079170/why-optiont – OscarRyz
而不是'get',你可以使用'apply'。它會返回確切的值,因爲它存在於地圖中。 – axel22