Принуждение суперкласса к подклассу
У меня есть класс, D
, который содержит виртуальный класс, A
, Я хотел бы заставить кусочки D
которые включают A
в один из двух подклассов для A
, Это возможно с эталонными классами R?
Желаемый вывод должен иметь новый объект класса D
который наследует либо B
или же C
оба из которых являются подклассами A
, Моя мотивация - иметь поля B
или же C
доступны на верхнем уровне. Я стараюсь не хранить суперкласс A
в одном из полей D
что является очевидным обходным путем.
## Toy classes
A <- setRefClass("A", fields=c(f1="numeric", f2="numeric"), contains="VIRTUAL")
## B and C are subclass of A
B <- setRefClass("B", fields=c(b_field="numeric"), contains="A")
C <- setRefClass("C", fields=c(c_field="numeric"), contains="A")
## D is a subclass of A as well, but can take either a B or a C
D <- setRefClass("D", fields=c(d_field="numeric"), contains = "A")
setAs("A", "B", def = function(from) {
# ??? what goes here?
})
d <- D$new()
result <- as(d, "B")
Результат должен иметь поля, уникальные для класса D
, все поля из класса A
и поле из класса B
,