J'ai une classe de référence que je pourrais utiliser comme objet dans une autre classe de référence. Exemple:R: Champs dans les classes de référence de type Classe de référence
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()
Quand j'invoque la première ligne après les marques de commentaire, il crée un objet Classe_2 avec un objet class_1 à l'intérieur de celui-ci, mais il initialise jamais les champs à l'class_1_item d'objet qui a son constructeur appelé dans le cadre de la première ligne. Pourtant quand j'appelle le constructeur directement dans la ligne 2 (en dehors du constructeur de la classe 2), il initialise ces champs très bien. Enfin, lorsque j'appelle le constructeur à la ligne 3 sans arguments, il n'obtient même pas les arguments par défaut et laisse tout nul. Je pense qu'il y a quelque chose de fondamental à propos des classes R qui les rend complètement différentes des classes C/Python/Java que je ne reçois pas. Je ne comprends pas ce que l'objet "class_1" appelle un objet lorsque j'utilise l'opérateur d'affectation avec $ setRefClass() $. De plus, j'ai l'impression de ne pas comprendre dans quels cas l'opérateur "< < -" est destiné à être utilisé dans ce contexte par rapport à l'opérateur "< -".
Qu'est-ce qui me manque?
Merci! Cela doit être une faute de frappe, alors - $ intializer $ devrait être $ initialize $. – ecksc