微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

scala – 如何在`Option [Map [String,String]]`上运行`.get(“key”)`

当我像这样创建一个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类上的参数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)

你得到的东西显然是地图.

get之后的(“foo”)应用于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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐