如何在实例化 class 之前导入 class 数据

How to import class data prior to instantiate the class

假设 class 和 class 的实例化保存在 2 个单独的文件中,您将如何在实例化 class 之前导入 class 数据?

如果保存在同一个文件中,下面的代码可以正常工作,但我怀疑一旦代码库开始增长,您就会希望将数据拆分成更小的代码块。

我应该使用 [source],它是否存在自动加载器或任何其他指南?

文件:_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()

如果我理解你的问题,你应该创建一个包说 MyPackage(包含你的 classes Class_1)并且其他人将是消费者,他们需要做library(MyPackage) 在他们的代码中,在使用 class.

之前

如果所有消费者都是同一个包的一部分,您可以获取它。

最直接的方法是首先 运行 或获取 class 文件。在这种情况下,结果将是一个存储在 R:s 全局环境中的环境对象。这是 class.

作为第二步,您通过实例化相同的对象来创建一个对象 class。 如果此实例保存在一个单独的文件中,您将不得不 运行 或也获取该文件。

由于两个对象(class 和对象)现在都将存在于全局环境中,您现在可以决定是否要删除 class 并只保留该对象。

遵循标准指南,两个对象之间的唯一命名约定差异是 class 名称以大写字母开头,同时对象具有相同的名称但所有字符均为小写。

如果 classes 的数量增加,管理对象 one-by-one 当然是不切实际的,您可能需要一些自动加载逻辑。