我发现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
我认为Option
“get”方法不会引起任何争论,所以这对我来说非常奇怪。它为什么有效?它是隐式转换还是错误?我想确定它是如何工作的。
我的规格是:
答案 0 :(得分:12)
这对fileInfo.get.apply("type")
感到厌倦,即你并没有真正将参数传递给Option#get
,而是在结果上调用.apply("type")
。
答案 1 :(得分:4)
Scala允许您omit braces in some cases,并且您已成为此功能创建的歧义的受害者:您所做的只是简单的展开选项(并获取基础地图) - 选项不仅广泛使用{ {1}},但也有不安全的.getOrElse
方法,当有None:
.get
答案 2 :(得分:2)
fileInfo.get("type")
被翻译为:
fileInfo.get().apply("type")
因此,您打开该选项,然后在Map
上获取一个元素。 (apply
获取地图的元素是非可选的,即如果密钥不存在则失败。