Ich habe eine Referenzklasse, die ich als Objekt in einer anderen Referenzklasse verwenden würde. Beispiel:R: Felder in Referenzklassen des Typs Referenzklasse
class_1 <- setRefClass(Class = "class_1"
, fields = list(nickname = "character", version = "character")
, methods = list(
initializer = function(nickname, version) {
nickname <<- nickname
version <<- version
}
)
)
class_2 <- setRefClass(Class = "class_2"
, fields = c(version = "character"
, nickname = "character"
, class_1_item = "class_1")
, methods = list(
initializer = function(class_2_nickname = "B", class_2_version = "V2") {
class_1_item <<- class_1$new(class_2_nickname, class_1_version)
nickname <<- class_2_nickname
version <<- class_2_version
}
)
)
#######
class_2_obj <- class_2$new(nickname = "A", version = "V1")
class_1_obj <- class_1$new(nickname = "A", version = "V1")
class_2_obj2 <- class_2$new()
Als ich die erste Zeile nach den Kommentar Markierungen aufrufen, erstellt es eine class_2 Objekt mit einem class_1 Objekt innerhalb davon, aber es initialisiert nie die Felder auf das Objekt class_1_item, die den Konstruktor als Teil genannt hat der ersten Zeile. Wenn ich jedoch den Konstruktor direkt in Zeile 2 (außerhalb des Konstruktors der Klasse 2) aufruft, initialisiert er diese Felder einfach. Schließlich, wenn ich den Konstruktor in Zeile 3 ohne Argumente aufruft, greift er nicht einmal auf die Standardargumente und lässt alles leer.
Ich habe das Gefühl, dass es bei R-Klassen etwas Grundlegendes gibt, das sie komplett von C/Python/Java-Klassen unterscheidet, die ich nicht verstehe. Ich verstehe nicht, was das Objekt "class_1" als Objekt bezeichnet, wenn ich den Zuweisungsoperator mit $ setRefClass() $ verwende. Außerdem habe ich das Gefühl, dass ich nicht verstehe, in welchen Fällen der Operator "< - < -" in diesem Zusammenhang gegen den Operator "< -" verwendet werden soll.
Was fehlt mir?
Danke! Das muss ein Tippfehler sein, dann sollte $ initializer $ $ initialize $ sein. – ecksc