我可以使用Scala选项来避免以下NoTouchElementException吗?

我可以使用Scala选项来避免以下NoTouchElementException吗?,scala,Scala,我有下面的HashMap val lastAsk = new HashMap[String, Quote] Quote对象有一个price()方法 以下 lastAsk(lastSecurity).price 如果lastSecurity不是密钥,则引发NoTouchElementException。要修复此问题,我可以使用contains检查,如果找不到密钥,则返回-1。然而,这感觉像是一种黑客行为,我可以在这里使用Option来设计一个更优雅的解决方案吗?具有返回Option的方法get

我有下面的HashMap

val lastAsk = new HashMap[String, Quote]
Quote对象有一个price()方法

以下

lastAsk(lastSecurity).price
如果lastSecurity不是密钥,则引发NoTouchElementException。要修复此问题,我可以使用contains检查,如果找不到密钥,则返回-1。然而,这感觉像是一种黑客行为,我可以在这里使用Option来设计一个更优雅的解决方案吗?

具有返回
Option
的方法
get
,因此您可以编写如下内容:

lastAsk get lastSecurity map (_ price) getOrElse 0

您可以在代码中进一步使用选项,也可以借助选项的方法
getOrElse
(在我的示例中,它是
0
)提供一些默认值