Ich bin mir nicht einmal sicher, wie ich beschreiben soll, was ich tue, außer mit einem Beispiel:
class Node
abstract class App {
def schema: Node
}
def bind(app: App, f: Node => Node) {
f(app.schema)
}
val app = new App {
val schema = new Node {
val child = new Node
}
}
bind(app, _.child)
Dies lässt sich nicht kompilieren. Ich erhalte: error: value child is not a member of this.Node
von der bind
anrufen.
Ich bin nicht sicher, wie man das beheben kann, aber ich denke, dass es wahrscheinlich die Verwendung von parametrisierten Typen beinhaltet. Ich brauche den Typ von f
der Parameter des aktuellen Node
Unterklasse zugewiesen schema
.
EDIT: Ich kann meinen Namen nicht explizit nennen Node
Untertypen, denn im wirklichen Leben habe ich ganze Bäume von statisch definierten Node
s und es wäre nicht sinnvoll, sie zu benennen.