我有一個引用類,我將其用作另一個引用類中的對象。例如: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