选项[Map [String,String]]可以很奇怪地得到一个值

bus*_*r84 0 scala scala-collections

我发现Option[Map[String, String]]奇怪的作品是这样的:

 scala> val fileInfo: Option[Map[String, String]] = Some(Map( "type" -> "hoge" ))
 fileInfo: Option[Map[String,String]] = Some(Map(type -> hoge))

 scala> fileInfo.get("type")
 res1: String = hoge
Run Code Online (Sandbox Code Playgroud)

我认为Option"get"方法不会引起任何争论,所以这对我来说非常奇怪.它为什么有效?它是隐式转换还是错误?我想确定它是如何工作的.

我的规格是:

  • Scala版本2.9.2
  • Java 1.6.0_43

Ben*_*mes 12

这个desugars fileInfo.get.apply("type"),即你没有真正传递参数Option#get,但调用.apply("type")结果.