Я пытаюсь написать код для преобразования неявного аргумента, как следующее:Scala неявного преобразования неявного аргумента
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