从函数返回的映射中获取值,在 Scala 中使用隐式
Get value from map returned from function with implicit in Scala
具有如下定义的隐式值和函数
implicit val v = 0
def function(implicit v: Int): Map[String, String] = Map("key" -> "value")
我能做到
function.get("key") // res0: Option[String] = Some(value)
function(v)("key") // res0: String = value
但以下内容无法编译
function("key")
那么我如何使用括号一次访问一个映射并传递隐式参数?
以下是您的选择:
scala> function.apply("key")
res6: String = value
scala> function(implicitly)("key")
res7: String = value
由于编译器无法知道您是要显式传递隐式参数还是调用 apply 方法,因此设计人员决定这将意味着传递隐式参数。
您可以放弃使用语法糖而只使用 apply
来解决歧义,或者您可以显式传递参数,但让编译器找到值。
具有如下定义的隐式值和函数
implicit val v = 0
def function(implicit v: Int): Map[String, String] = Map("key" -> "value")
我能做到
function.get("key") // res0: Option[String] = Some(value)
function(v)("key") // res0: String = value
但以下内容无法编译
function("key")
那么我如何使用括号一次访问一个映射并传递隐式参数?
以下是您的选择:
scala> function.apply("key")
res6: String = value
scala> function(implicitly)("key")
res7: String = value
由于编译器无法知道您是要显式传递隐式参数还是调用 apply 方法,因此设计人员决定这将意味着传递隐式参数。
您可以放弃使用语法糖而只使用 apply
来解决歧义,或者您可以显式传递参数,但让编译器找到值。