问题标签 [reference-class]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - R 包 - 我应该导入 `methods` 包吗?
我setRefClass
用来创建类,因为它是methods
包的一部分,所以我假设你需要将此依赖项声明为import
.
但是,以下最小示例Rcmd.exe check
在import
ing时失败methods
:
出现以下错误(我的包被称为Test
):
因此,据我所知,似乎有人告诉我删除import
formethods
并隐藏包对methods
. 我的解释是否正确,如果是,为什么要隐藏对 的依赖methods
?
我的设置:
- 氧气2 3.0.0
- R:3.0.2(飞盘航行)
- IDE:RStudio 0.98.490
- 操作系统:Windows 8.1
r - R参考类中字段(数据成员)的自动更新
decorator @property
与python中的任何等价物吗?
也就是说,由于另一个字段的更新,一个字段会自动更新(访问时),而不是在访问之前重新计算它。
更新 2014-02-06
通过将“一个”字段定义activeBindingFunction
为“另一个”字段的一个,可以打开自动更新(参见@jdharrison 的答案)。但是,有没有办法检查这样的更新是否是惰性评估?如果没有,我们怎样才能做到这一点?
(后来的编辑:内部的“非正式”打印功能activeBindingFunction
很明显评估是惰性的。有什么方法可以更正式地检查这个问题吗?)
为了更好地说明我的问题,下面是一段 python 代码,它通过decorator @property
- 产生所需的惰性行为 - 请耐心等待我将其放入带有R标记的问题中。
互动环节
r - 加速 R 参考类中的字段访问
我一直在使用R 参考类编写代码。然而,随着我的进步,程序变得慢得令人无法忍受。为了演示这个问题,举个例子:
它需要:
- 调用方法的 4s
- 7s 调用生成随机数
- 19s 增加一个字段值
这是给我带来问题的最后一个结果。我显然不希望增加一个数字比生成一个随机数花费两倍的时间。我的代码涉及大量访问和更改引用类中的字段值,而这个性能问题使程序几乎可用。
我的问题:我能做些什么来提高 R 参考类中字段查找/访问的性能吗?有什么我应该做的不同的事情吗?
r - 仅列出显式定义的方法(参考类)
有没有办法只列出在类定义中明确定义的引用类的那些方法(与“系统类”继承的那些方法相反,例如refObjectGenerator
or envRefClass
)?
您当前通过调用该$methods()
方法获得的结果(请参阅 参考资料?setRefClass
):
我在找什么:
r - 如何从ctor中具有强制参数的类继承?
似乎如果我们创建一个B
继承自 class的类A
,则在创建A
时会调用 的构造函数B
。这会导致以下问题 -A
其 ctor 中可能有一个强制参数(用于在实例化期间使用),因此运行以下命令:
我得到错误
这似乎很奇怪 - 为什么会发生这种情况,我该怎么办?
r - 依赖注入:如何在 R 中使用/实现 PicoContainer 框架
问题
一般问题
您将如何开始在 R 中实现PicoContainer-Framework?
具体问题
“微微注册表(机制)”实际上会是什么样子?我想出了一个“穷人的版本”,它只适用于单个注册过程(参见DefaultPicoContainer
下面示例中的类;此时方法getComponentInstance()
实际上并没有利用信息getRefClass("MovieLister")
来查找注册的组件)
例子
AFAIU,R 中还没有任何PicoContainer-Framework的实现,所以我考虑了它的外观。
到目前为止,这是我能想到的。它的灵感来自Martin Fowler关于依赖注入的文章。
1.业务逻辑层示例
接口(类)MovieFinder
班级MovieLister
班级ColonMovieFinder
2. R中Pico容器框架的适配
班级ConstantParameter
班级DefaultPicoContainer
功能configurecontainer
3. 测试
尽管我知道这个测试实际上超出了纯单元测试的范围,但我还是使用了单元测试。
背景
我开始着迷于面向对象设计的SOLID原则,尤其是依赖倒置和依赖注入的概念/原则,并希望开始在我的 R 程序中遵循它们。
非常感谢任何有关如何在 R 中最好地遵循这些原则的指针
r - 扩展原始错误消息
有没有办法直接扩展/增加/覆盖当调用我自己没有编写的函数失败时抛出的原始错误消息(即来自基本 R和贡献包的函数)?
例子
考虑以下参考类:
指定正确值时没有错误:
指定错误值时产生的错误:
现在,我想包含有关实际“导致问题”的类的信息。
也许这看起来像这样:
我目前实现接近目标的解决方法通常如下所示:
首先实例化一个“空白”对象后
当尝试通过显式 setter 方法为字段设置错误值时,这会给我以下错误:
我不喜欢它,原因如下:
它包含很多代码,只需要一点额外的信息,并且这
tryCatch()
部分使代码更难阅读。由于 , AFAIU 的性质,如果我期望一些“常规”行为(即“即使有警告,字段值仍然设置”)
tryCatch()
,我也有义务将.self$field(field=field, value=value)
语句放入函数中。warning()
那是重复的代码。在我看来,通过强制错误消息
as.character()
(为了能够通过等添加信息所必需的 AFAIUpaste()
)有时会切断错误消息。这样我就不得不通过显式的 setter 函数 (
<obj>$setField(<field>, <value>)
) 设置我的字段值,而不是通过“内置”initialize
函数 (new("A", <field>=<value>)
)设置它们
r - R参考类和doparallel
最近,我正在尝试将引用类与parallel
. 我尝试了 4 种不同的方案,多核、MPI、Socket 和 Forking。但是,只有多核才能产生正确的结果。而 MPI、PSOCK 和 Forking 都会产生错误。
PS:我在支持 MPI 的计算机集群上运行此脚本。
它可能与参考类的并行计算有关
更新:
更多调查表明,引用类实例是克隆的,但不是引用类定义。
r - ReferenceClass 的 `print` 方法
我有:
MyClass <- setRefClass("MyClass" , fields = list(data="numeric"))
让我们初始化一个对象MyClass
:
OBJ <- MyClass(数据=1:4)
...并在屏幕上打印:
对象
我想改变它的打印方式,所以我写了这个方法:
print.MyClass <- function(x) { cat("这是打印的表示:") print(x$data) }
现在这有效:
打印(OBJ)
这不会:
对象
有什么方法可以通过键入来实现我的打印方法OBJ
吗?
我也尝试过show
,或者(OBJ)
,但不爱我。