2017-05-08 79 views
0

在scala中,我有一張地圖。Scala從地圖獲取值時,如果不確定地圖是否包含值

我想從我的地圖中尋找一個對象 - 比如火車。然後,我想在我的列車上調用「getNumberOfCarriages」方法。

如果我不知道地圖是否有關鍵值「Thomas」的條目,在scala中如何安全地查詢滑架的數量或返回一些默認值(爲了例如,0?)

即我怎麼叫

myMap.get("Thomas").getNumberOfCarriages() 

我見過getOrElse方法,但我不確定它是否適用的問題?

+2

'myMap.get(「Thomas」).map(getNumberOfCarriages')返回'Option [Int]'。這取決於你和你的問題如何解釋。留在'選項'或獲得價值與回退到默認值。 – Zernike

回答

3

你可以做的一件事是lift它到一個Option然後fold通過它來獲得車的數量或默認值,如果None

myMap.lift("Thomas").fold(0)(_.getNumberOfCarriages()) 
+0

謝謝,這就是我一直在尋找的。我會接受,當它讓我 – bharal