如何在`Option [Map [String,String]]`上运行`.get(" key")`

时间:2016-02-26 14:06:43

标签: scala

当我创建像这样的Option[Map[String,String]]

scala> val x = Some(Map("foo" -> "bar"))
x: Some[scala.collection.immutable.Map[String,String]] = Some(Map(foo -> bar))

为什么这个电话有效:

scala> x.get("foo")
res0: String = bar

由于x是实例Option,并且没有方法get接受case class Some上的参数且该类是最终的,因此这不起作用。 IDE没有提供任何提示,为什么这样做。

1 个答案:

答案 0 :(得分:11)

Optionget方法,没有参数列表。您只需使用名称get而不使用参数列表来调用它:

scala> val x = Some(Map("foo" -> "bar"))
x: Some[scala.collection.immutable.Map[String,String]] = Some(Map(foo -> bar))

scala> x.get  // Note: no arguments
res0: scala.collection.immutable.Map[String,String] = Map(foo -> bar)

你得到的回报显然是Map

("foo")get应用于Map。请注意,这是在apply上调用Map方法的快捷语法。因此,x.get("foo")相当于x.get.apply("foo")

scala> x.get("foo")  // Shortcut syntax
res2: String = bar

scala> x.get.apply("foo")  // For this
res3: String = bar