【发布时间】:2016-03-21 17:04:10
【问题描述】:
我有一个引用类,我想将它用作另一个引用类中的对象。示例:
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_2 对象,其中包含一个 class_1 对象,但它从未将字段初始化为对象 class_1_item,该对象的构造函数作为第一行的一部分被调用。然而,当我直接在第 2 行(在类 2 构造函数之外)调用构造函数时,它初始化这些字段就好了。最后,当我在第 3 行不带参数调用构造函数时,它甚至不会获取默认参数,而是将所有内容都保留为空。
我觉得 R 类有一些基本的东西,使它们与我没有得到的 C/Python/Java 类完全不同。当我将赋值运算符与 $setRefClass()$ 一起使用时,我不明白对象“class_1”指的是什么对象。另外,我觉得我不明白在什么情况下“
我错过了什么?
【问题讨论】:
标签: r oop reference-class