我尝试写一些代码转换的隐含参数,喜欢的隐式转换如下:斯卡拉隐含参数
case class A()
case class B()
object B {
implicit def b2a(b: B): A = new A()
}
def foo(f: B => String) = f(new B())
def bar(implicit a: A) = "A"
foo { implicit b =>
bar()
}
给出了错误:
<console>:27: error: not enough arguments for method bar: (implicit a: A)String.
Unspecified value parameter a.
有没有一种办法使用隐式转换而不手动调用它?
这不是一个答案,但你绝对肯定你需要这样做吗?你已经看到了一个令人困惑的混乱情况,那就是不得不推断这些暗示将如何解决 - 你是否真的想对每个使用你的代码的人强加这种困惑? –
我同意。这比它值得的更麻烦,但我接受了@ m-z的回答,因为它解决了这个问题。 – pschorf