別の参照クラス内のオブジェクトとして使用する参照クラスがあります。例:R:参照のフィールドReferenceクラスのクラス
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にします。
私は届かないC/Pythonの/ Javaクラスから彼らは完全に違うのRクラスについての根本的な何かがありますように私は感じます。 $ setRefClass()$で代入演算子を使用すると、オブジェクト "class_1"がオブジェクトとして参照しているものがわかりません。また、 "< < - "演算子が "< - "演算子に対してこのコンテキストで使用されることを意図している場合、私は理解できないように感じます。
私には何が欠けていますか?
ありがとう!それはタイプミスでなければなりません。そして、$ intializer $は$ initialize $でなければなりません。 – ecksc