library(S7)
# problem -----------------------------------------------------------------
class_a <- new_class("class_a", properties = list(x = class_character))
class_b <- new_class(
"class_b",
properties = list(class_a = class_a),
constructor = function(class_a = class_a()) {
new_object(S7_object(), class_a = class_a)
}
)
try(class_b())
#> Error in new_object(S7_object(), class_a = class_a) :
#> promise already under evaluation: recursive default argument reference or earlier problems?
# alias -------------------------------------------------------------------
class_a <- new_class("class_a", properties = list(x = class_character))
.class_a <- function() class_a()
class_b <- new_class(
"class_b",
properties = list(class_a = class_a),
constructor = function(class_a = .class_a()) {
new_object(S7_object(), class_a = class_a)
}
)
class_b()
#> <class_b>
#> @ class_a: <class_a>
#> .. @ x: chr(0)
# get() -------------------------------------------------------------------
class_a <- new_class("class_a", properties = list(x = class_character))
class_b <- new_class(
"class_b",
properties = list(class_a = class_a),
constructor = function(class_a = get("class_a", 1)()) {
new_object(S7_object(), class_a = class_a)
}
)
class_b()
#> <class_b>
#> @ class_a: <class_a>
#> .. @ x: chr(0)
Created on 2023-10-09 with reprex v2.0.2.9000