3

リファレンスクラスに別のショットを与えることにしましたが、私の最初のhelloworldはすでに問題を抱えています。ここで何が問題になっていますか?

> 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)
4

1 に答える 1

5

私は参照クラスの経験があまりありませんが、ヘルプ ページ ( ) によると、オブジェクトを自動的に印刷できるようにするには、クラスにメソッドを?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

この助けを願っています

于 2012-08-05T11:57:09.900 に答える