Ich war auf Best Practices für die Implementierung von Slick lesen, und wurde this example untersucht. Darin gibt es dieses Konstrukt:dies: SomeObject => Objekt Konstrukt
trait BankRepository extends BankTable { this: DBComponent =>
... //A bunch of code
}
Ich verstehe nicht, den this: DBComponent =>
Teil. In diesem Fall ist DBComponent
ein einfaches Merkmal, das an anderer Stelle definiert wurde (Sie finden es im obigen Link). Was ich nicht verstehe, ist:
- Was bedeutet die
this: DBComponent =>
tun konstruieren. Meine IDE beschwert sich nicht, aber sie verbindet sich auch nicht mit der Funktion, die von=>
ausgeführt wird. Meine Intuition ist, dass es sagt, der Rest des Codes ist ein Wert, der zurückgegeben wird, aber ich bin nicht klar darüber, was es aufruft, oder was der Wert genau zurückgegeben hat. - Was nenne ich dieses Konstrukt? Wie bei vielen symbolträchtigen Konstrukten ist es schwer, nach Dokumenten zu suchen/zu suchen, da diese eindeutig vom Kontext abhängig sind. Aber sogar den Kontext zu beschreiben ist schwierig. Wie heißt dieses Konstrukt?
Interessant! Haben Sie einen Link zur Dokumentation? Sollte dies auch als ein Einzeiler betrachtet werden, der magisch auf die Typbeschreibung gehoben wird, oder wirkt sich das Folgende auf den Typ aus? Könnte ich es zum Beispiel in die Mitte des Merkmals setzen? –
Ich habe es nur an der Spitze des Trait/Class-Code gesehen. Einige schnelle Experimente mit der IntelliJ-IDE zeigen an, dass der Compiler sie ablehnt, wenn sie nicht an der Spitze steht. – jwvh
Meine Experimente ergaben das gleiche Ergebnis, aber ich war mir nicht sicher, wie genau der Compiler bei den Typinformationen innerhalb der Klammern kam. (Weit über mein Verständnis von Compilern.) Danke für die Hilfe! –