我正在尝试编写一个对象并访问其参数。我有两个文件,menus.R
(用于定义对象)和main.R
(用于使用对象并尝试访问插槽(参数))。
两个文件的代码都位于下一个:
menus.R
menu <- setClass("menu", slots=list(competition="numeric", stats="numeric"))
setMethod("show", "menu", function(object){
while (TRUE){
#Clean console
cat("\014")
cat("COMPARATIVA ENTRE EQUIPOS DE LA MISMA COMPETICION\n")
cat("-------------------------------------------------\n\n")
cat("1. Comparativa entre clubes de Liga DIA\n")
cat("2. Comparativa entre clubes de Liga Femenina 2 - Grupo 'A'\n")
cat("3. Comparativa entre clubes de Liga Femenina 2 - Grupo 'B'\n")
cat("0. Salir\n\n")
option <- readline("Selecciona opción: ")
option <- suppressWarnings(as.numeric(option))
if (!is.na(option)){
if (option == 1){
object@competition <- 14
}
if (option == 2){
object@competition <- 22
}
if (option == 3){
object@competition <- 23
}
readline("Espera ...")
if (option == 0)
break
}else{
readline("No es un número. Pulsa una tecla para introducir otra opción.")
}
}
})
main.R
menu(competition=0, stats=0)
print(menu@competition)
getClass(class(menu))
当我致电menu(competition=0, stats=0)
时,我可以看到show
方法给我带来了什么。这是对的。在show
方法中,我为competition
分配了一个值。当我从show
方法退出时,下一条指令是print(menu@competition)
,这是我收到此错误的地方:
打印错误(menu @ competition):没有名称为的插槽 该对象类“ classGeneratorFunction”的“竞争”
然后用getClass(class(menu))我得到了:
我在做什么错?如何获得对competition
或stats
的访问权限?
答案 0 :(得分:1)
Replace
会为您生成一个类menu(competition = 0, stats=0)
的新对象,但是您无法将其保存在某处,因此它会在屏幕上打印。因此,您的第一个正确输出。
但是,您想操纵对象。但是您没有保存!而是尝试操纵“对象工厂” menu
。您将看到“对象工厂”的类型为menu()
。
这应该有效:
classGeneratorFunction