如何在实例化 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 当然是不切实际的,您可能需要一些自动加载逻辑。
假设 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 当然是不切实际的,您可能需要一些自动加载逻辑。