【发布时间】:2016-02-21 01:55:04
【问题描述】:
我想调用一个带有隐式参数的函数返回的函数,简单而优雅。这不起作用:
def resolveA(implicit a: A): String => String = { prefix =>
s"$prefix a=$a"
}
case class A(n: Int)
implicit val a = A(1)
println(resolveA("-->")) // won't compile
我已经弄清楚发生了什么:Scala 看到 ("-->") 并认为这是试图显式填充隐式参数列表。我想将其作为 prefix 参数传递,但 Scala 将其视为 a 参数。
我尝试了一些替代方法,比如在隐式参数列表之前放置一个空参数列表 (),但到目前为止,我一直被 Scala 认为返回函数的参数是试图填充的事实所阻止在resolveA的隐式参数列表中。
有什么好的方法来做我在这里尝试做的事情,即使它不如我上面尝试的语法好?
【问题讨论】:
-
@som-snytt,您删除的答案中的
implicitly对我的真实代码很有帮助!我已经找到了一个很好解决问题的案例。