оценить выражение в среде экземпляра R RefClass - PullRequest
0 голосов
/ 10 мая 2019

Я имею дело с новой проблемой, которой у меня не было раньше (раньше она работала нормально).R показывает ошибку, если я запускаю метод класса изнутри класса, если я не запускал это раньше вне области действия экземпляра.Я не знаю, как сформулировать мой вопрос, пожалуйста, прочитайте пример:

> setRefClass(
+   Class = "testClass",
+   methods = list(
+     test = function(){
+       print("test")
+     }
+   )
+ )
> instance = new("testClass")
> eval(substitute(test()), instance) 
Error in test() : could not find function "test"
> # WHY DID I GET ERROR !!!!

> instance$test()
[1] "test"
> eval(substitute(test()), instance)
[1] "test"
> # IF I RUN THE METHODE ONCE FROM OUTSIDE, I DON'T GET ERROR!!!!

1 Ответ

0 голосов
/ 13 мая 2019

после некоторых экспериментов, похоже, что R должен смонтировать методы к классу перед его использованием.

Однако я мог бы определить функцию в классе field и использовать ее немедленно.

Вот пример:

> setRefClass(
+   Class = "testClass",
+   fields = list (
+      test = "function"
+   ),
+   methods = list(
+     initialize = function(){
+       test <<- function(){
+           print("test")
+       }
+     }
+   )
+ )
> instance = new("testClass")
> eval(substitute(test()), instance)
[1] "test"

Я точно не уверен, в чем различия, но все работает, как я и ожидал.

...