我有一个引用类,我将其用作另一个引用类中的对象。例如:R:引用类的引用类中的字段引用类
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()
当我调用注释标记后的第一线,它创建了它的内部class_1对象class_2对象,但它从来没有初始化的字段有它的构造函数对象class_1_item称为部分的第一行。然而,当我直接在第2行(在第2类构造函数之外)调用构造函数时,它会初始化这些字段。最后,当我在没有参数的情况下调用第3行的构造函数时,它甚至不会获取默认参数并将所有内容都设为null。
我觉得R类有一些基本的东西,它们与C/Python/Java类完全不同,我没有得到。当我将赋值运算符与$ setRefClass()$一起使用时,我不明白“class_1”对象指向的对象是什么。另外,我觉得我不明白在什么情况下,“< < - ”运营商是打算在本上下文中使用,而不是“<-”运营商。
我错过了什么?
谢谢!那肯定是一个错字,然后 - $ intializer $应该是$ initialize $。 – ecksc