Невозможно получить доступ к объекту внутри функции, используя внешнюю функцию R6 - PullRequest
0 голосов
/ 04 мая 2020

У меня есть класс R6 с кодом, подобным этому

# Cutting out lots of code and only putting in relevant lines
public(
   function1 <- function(){
      var <- xyz$abc
   },

  function2 <- function(){
     xyz <- blah blah
     z <- function1()
  }
)

При вызове function2 я получаю сообщение об ошибке в function1, говорящее, что xyz не найден, даже если он назначен в function2, который вызывается перед function1

Пожалуйста, дайте мне знать, если я правильно понимаю и как это исправить.

1 Ответ

0 голосов
/ 04 мая 2020

Для «традиционных» функций R родителем среды оценки функции является вызывающая среда.

Для функции R6 это не то же самое. Родителем среды оценки метода является среда, включающая переменную self, которая предоставляет доступ к свойствам объекта.

Это можно проверить, добавив

print(ls(parent.env(environment()))) in your method.

Это означает, что вы не может иметь доступ к вашей переменной xyz в function1. Вы должны использовать publi c или приватные переменные или передать их в качестве параметра своей функции.

Кстати, вы также должны добавить self$ к вызову функции1 (self$function1())

...