Допустим, у меня естьПреобразование из супер-класса унаследованного класса в R6
library(R6)
Person <- R6Class("Person",
public = list(
name = NULL,
hair = NULL,
initialize = function(name = NA, hair = NA) {
self$name <- name
self$hair <- hair
self$greet()
},
set_hair = function(val) {
self$hair <- val
},
greet = function() {
cat(paste0("Hello, my name is ", self$name, ".\n"))
}
)
)
PersonWithSurname <- R6Class("PersonWithSurname",
inherit = Person,
public = list(surname = NA,
initialize = function(name, surname, hair) {
super$initialize(name, hair)
self$surname <- surname
})
)
Тогда на R консоли я имею сказать,
newobject <- Person("Ann", "black")
Hello, my name is Ann.
Есть ли способ, где я могу теперь использовать вышеуказанный объект без повторного использования имени или переписывания кода в унаследованном объекте
eg Я не хочу, чтобы сделать
inheritObject <- PersonWithSurname$new("Ann", "Doe", "black")
Hello, my name is Ann.
Потому что я повторял «Энн» и «черный», в идеале я бы просто хочу
inheritObject <- PersonWithSurname$new("Doe")
Hello, my name is Ann.
И было бы сохранить все свойства.
Заранее спасибо.
Я совсем как этот подход Altough на [второй] конструктору (https://stackoverflow.com/questions/35881234/user-constructor-for-r6-class-in-r) может быть более элегантный. –