当我创建Option[Map[String,String]]
这样的
scala> val x = Some(Map("foo" -> "bar"))
x: Some[scala.collection.immutable.Map[String,String]] = Some(Map(foo -> bar))
Run Code Online (Sandbox Code Playgroud)
为什么这个电话有效:
scala> x.get("foo")
res0: String = bar
Run Code Online (Sandbox Code Playgroud)
因为x
是实例,Option
并且没有get
接受参数的方法,case class Some
并且该类是最终的,所以这不应该起作用.IDE没有提供任何提示,为什么这样做.
Jes*_*per 11
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)
Run Code Online (Sandbox Code Playgroud)
你得到的回答显然是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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
158 次 |
最近记录: |