我嘗試寫一些代碼轉換的隱含參數,喜歡的隱式轉換如下:斯卡拉隱含參數
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