2012-08-05 3 views
3

참조 클래스에 다른 샷을 제공하기로 결정했지만 첫 번째 안녕하세요 세상에서 이미 문제를주고 있습니다. 여기서 뭐가 잘못 됐어?참조 클래스 필드가 사라짐

> 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

는'예약 된 이름의 일종 인 get'과 관련이있다; 'get'를'get.state'와 같은 다른 이름으로 변경하면 코드가 작동합니다. – flodel

+0

대단해. 'setRefClass'가 이것에 대한 경고를 던지지 않는다고 너무 지나치게 편안하게하지는 않습니다. – Jeroen

답변

5

나는 매우 Reference Classes 경험하지만, 도움말 페이지 (?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 

희망하는 모든 가능성이 도움