Почему я получаю сообщение об ошибке при инициализации объекта моего определенного ссылочного класса? - PullRequest
0 голосов
/ 06 ноября 2019

Я создаю генератор для объекта ссылочного класса с именем «student», но при попытке инициализировать объект этого класса я получаю сообщение об ошибке. Я попытался инициализировать два разных способа (оба показаны ниже) и получил две отдельные ошибки. Код, который я использую, и возникающие ошибки приведены ниже. Может кто-нибудь объяснить, где я ошибся?

1) Инициализация непосредственно из генератора - без именованных аргументов (Это ошибка, которую я получаю последовательно, если я не предоставляю имена аргументов генератору)

student <- 
  setRefClass("student",
              fields = 
                list(name = "character",
                     age = "numeric",
                     GPA = "numeric"))
s <- student("John", 21, 3.5)


Error in initialize(value, ...) : cannot use object of class “numeric” in new(): class “student” does not extend that class
5.
stop(gettextf("cannot use object of class %s in new(): class %s does not extend that class", dQuote(Classi), dQuote(Class)), domain = NA)
4.
initialize(value, ...)
3.
initialize(value, ...)
2.
methods::new(def, ...)
1.
student$new("John", 21, 3.5)

2) Явная инициализация с использованием метода «new» и именованных аргументов

student <- 
  setRefClass("student",
              fields = 
                list(name = "character",
                     age = "numeric",
                     GPA = "numeric"))
s <- student$new(name = "John", age = 21, GPA = 3.5)


Error in initialize(value, ...) : invalid names for slots of class “student”: name, age, GPA
5.
stop(sprintf(ngettext(sum(is.na(which)), "invalid name for slot of class %s: %s", "invalid names for slots of class %s: %s"), dQuote(Class), paste(snames[is.na(which)], collapse = ", ")), domain = NA)
4.
initialize(value, ...)
3.
initialize(value, ...)
2.
methods::new(def, ...)
1.
student$new(name = "John", age = 21, GPA = 3.5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...