diesen Fall Klasse vor:Mit expliziten Wert zu impliziten Parameter als neue implizite Wert übergeben
case class IntPrinter(implicit val i: Int) {
def print()(implicit i: Int) = println(i)
}
ich Instanz kann es explizit einen Wert für das implizite Argument wie folgt übergeben:
val p = IntPrinter()(9)
I‘ Im IRC wurde mir gesagt, dass der explizit übergebene Wert von jetzt an implizit an den Drucker übergeben wird, wenn er aufgerufen wird, aber das ist nicht der Fall:
p.print()
error: could not find implicit value for parameter i: Int
Mache ich etwas falsch oder habe ich falsche Informationen missverstanden? Gibt es einen Weg, dies zu erreichen?
EDIT: als eine Frage der Tatsache, wie es funktioniert erwartet, wenn ich p._
wie folgt importieren:
import p._
p.print()
die in der Tat 9
druckt.
Ist dies das richtige Verhalten? Verwenden Sie import
als schlechte Idee, wie es klingt? Wie kann ich das umgehen?
Der Grund, dass das Importieren' verhalten wollte p._' funktioniert, weil Sie einfach das 'i' aus der case-Klasse IntPrinter (implizit val i: Int)' in den Geltungsbereich bringen. Aber ... das 'i' ist bereits innerhalb der Klasse" im Umfang "; Sie müssen nichts Spezielles tun, um darauf zuzugreifen. – Destin