Поля ссылочного класса исчезают
Я решил дать справочным классам еще один шанс, но мой первый hello world уже дает мне проблемы. Что здесь происходит не так?
> memory <- setRefClass(
+ Class = "memory",
+ fields = list(state="vector"),
+ methods = list(
+ get = function() { return(state) },
+ set = function(x) { state <<- x }
+ )
+ )$new()
> memory$set(123)
> print(memory)
Reference class object of class "memory"
Field "state":
[1] 123
> memory$get()
[1] 123
> print(memory)
Reference class object of class "memory"
Field "state":
Error in methods::show(field(fi)) :
error in evaluating the argument 'object' in selecting a method for function 'show': Error in get(name, envir = .self) :
unused argument(s) (name, envir = .self)
1 ответ:
Я не очень опытен с ссылочными классами, но в соответствии со страницей справки (
?ReferenceClasses
), я думаю, что вы должны добавить методshow
в свой класс, чтобы иметь возможность автоматически печатать ваш объект.memory <- setRefClass( Class = "memory", fields = list(state="vector"), methods = list( get = function() { return(state) }, set = function(x) { state <<- x }, show = function() {methods::show(state)} ) )$new() memory$set(123) print(memory) #[1] 123 memory$get() #[1] 123 print(memory) #[1] 123
Надеюсь, что это поможет