Как импортировать данные класса до создания экземпляра класса - PullRequest
0 голосов
/ 25 июня 2019

Предполагая, что класс и создание экземпляра класса хранятся в 2 отдельных файлах, как бы вы импортировали данные класса до создания экземпляра класса?

Ниже код работает нормально, если он содержится в одном и том же файле, но яПодозреваю, что как только база кода начнет расти, вы захотите разделить данные на более мелкие куски кода.

Должен ли я использовать [источник], существует ли автозагрузчик или какой-либо другой указатель?

Файл: _class_data.R

if (!"package:R6" %in% search()) {
  library(R6)
}

# Class 1


Class_1 <- R6Class("Class_1",

    public = list(

        # Properties:
        x = 0,

        # Lists:
        credentials = list(
            user       = "user",
            password   = "pass"
        ),

        # Functions:
        myFunction = function() {
            return(self$x)
        }
     )

)

Файл: run.R

# Should I add a [source] path here to [ _class_data.R] ?

# Instantiate a class by creating an object.
class_1 <- Class_1$new()

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Самый простой способ - сначала запустить или получить файл класса. В этом случае результатом будет объект среды, который хранится в глобальной среде R: s. Это класс.

В качестве второго шага вы создаете объект путем создания экземпляра того же класса. Если этот экземпляр хранится в отдельном файле, вам также придется запустить или получить этот файл.

Поскольку оба объекта (класс и объект) теперь будут существовать в глобальной среде, теперь вы можете решить, хотите ли вы удалить класс и просто сохранить объект.

Следуя стандартным правилам, единственная разница в именах между этими двумя объектами будет заключаться в том, что имя класса начинается с заглавной буквы, в то время как объект имеет то же имя, но со всеми символами в нижнем регистре.

Если количество классов возрастает, то, конечно, нецелесообразно администрировать объекты по одному, и вам, вероятно, понадобится некоторая логика автозагрузки.

0 голосов
/ 25 июня 2019

Если я понимаю ваш вопрос, вы должны создать пакет, скажем MyPackage (содержащий ваши классы Class_1), и другой человек будет потребителем, ему нужно будет сделать library(MyPackage) в своем коде, прежде чем использовать класс .

Вы можете получить его, если все потребители входят в одну упаковку.

...