首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R6类中的静态方法

R6类中的静态方法
EN

Stack Overflow用户
提问于 2015-03-07 15:27:32
回答 2查看 2.2K关注 0票数 14

有方法向R6类添加静态方法吗?例如,可以调用如下所示的函数

代码语言:javascript
复制
MyClass$method()

而不是

代码语言:javascript
复制
myinstance <- MyClass$new()
myinstance$method()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-07 22:15:30

我不是R6方面的专家,但是由于每个R6类都是一个环境,所以您可以在这个环境中添加任何您想要的内容。

比如:

代码语言:javascript
复制
MyClass$my_static_method <- function(x) { x + 2}
MyClass$my_static_method(1)
#[1] 3

但是该方法将不适用于类的实例

代码语言:javascript
复制
instance1 <- MyClass$new()
instance1$my_static_method(1)
# Error: attempt to apply non-function

您应该小心处理类环境中的现有对象。要查看已经定义的内容,请使用ls(MyClass)

票数 14
EN

Stack Overflow用户

发布于 2018-03-21 21:19:22

我用了一种解决办法。您可以通过调用MyClass$public_methods$my_static_method()来访问这些方法,而无需创建实例。为了限制没有实例的调用,我在所有方法中都将self作为参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28916460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档