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

时间:2019-06-25 13:39:25

标签: r oop module r6

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

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

我应该使用[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)
        }
     )

)

文件:运行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 :(得分:0)

如果我理解您的问题,则应创建一个MyPackage的程序包(包含您的类Class_1),而其他人将成为消费者,他们需要在自己的计算机上执行library(MyPackage)代码,然后再使用该类。

如果所有使用者都是同一包装的一部分,则可以采购它。

答案 1 :(得分:0)

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

第二步,通过实例化相同的类来创建对象。 如果将此实例保存在单独的文件中,则您还必须运行或来源该文件。

由于两个对象(类和对象)现在都将存在于Global环境中,因此您现在可以决定是否要删除该类并仅保留该对象。

按照标准准则,这两个对象之间唯一的名称约定区别是类名以大写字母开头,同时该对象具有相同的名称,但所有字符均小写。

如果类的数量增加,那么一对一地管理对象当然是不切实际的,并且您可能需要一些自动加载逻辑。