5
Nur ein dynamisches Objekts Implementierung (mit 2.10.0-M3):Scala dynamisches Feld mit dem Namen x
import language.dynamics
object D extends Dynamic {
def selectDynamic(field : String) = Symbol(field)
}
Die folgende funktioniert und wie
object DynamicTest extends App {
println(D.a)
}
Printing ‚ein
erwartet Aber, wenn ich das versuche:
object DynamicTest extends App {
println(D.x)
}
Ich bekomme eklige Fehler:
[error] DynProb.scala:7: type mismatch;
[error] found : D.type
[error] required: ?{val x: ?}
[error] Note that implicit conversions are not applicable because they are ambiguous:
[error] both method any2Ensuring in object Predef of type [A](x: A)Ensuring[A]
[error] and method any2ArrowAssoc in object Predef of type [A](x: A)ArrowAssoc[A]
[error] are possible conversion functions from D.type to ?{val x: ?}
[error] println(D.x)
[error] ^
[error] one error found
Warum ist x so besonders? Ich mache etwas Dummes?
Das ist das Problem: https://github.com/scala/scala/blob/master/src/library/scala/Predef.scala#L271 – Debilski
Also muss ich im Wesentlichen damit leben, bis das Ding tatsächlich entfernt wird aus der lib, nicht nur veraltet. Schande. Danke für den Zeiger :-) – hughleat
Hier ist ein Gedanke: Angenommen, dass Dynamic zuerst versucht, einen passenden Namen im Bereich zu finden, bevor Sie selectDynamic ausprobieren, usw. Sollte es auch veraltete Namen vermeiden? – hughleat