如何`获得( “钥匙”)`上`选项[地图[字符串,字符串]]`工作
问题描述:
当我创建一个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
参数和类是final的,这不应该工作。 IDE没有提供任何提示,为什么这是有效的。
答
Option
有一个没有参数列表的get
方法。您只要使用该名称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
。请注意,这是在Map
上调用apply
方法的快捷方式语法。因此,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
它调用映射上的apply方法 – hasumedic