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

del*_*ber 5 scala

我有以下HashMap

val lastAsk = new HashMap[String, Quote]
Run Code Online (Sandbox Code Playgroud)

引用对象有一个price()方法

下列

lastAsk(lastSecurity).price
Run Code Online (Sandbox Code Playgroud)

如果lastSecurity不是键,则抛出NoSuchElementException.要修复我可以使用包来检查然后返回-1如果找不到密钥.然而,这感觉就像一个黑客,我可以在这里使用Option来设计更优雅的解决方案吗?

ten*_*shi 11

Mapget返回的方法Option,所以你可以写这样的东西:

lastAsk get lastSecurity map (_ price) getOrElse 0
Run Code Online (Sandbox Code Playgroud)

您可以在代码中进一步使用选项,或者在选项方法的帮助下提供一些默认值getOrElse(在我的示例中0).