首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R语言中重写R6Class的to字符串方法?

如何在R语言中重写R6Class的to字符串方法?
EN

Stack Overflow用户
提问于 2021-07-12 22:18:45
回答 1查看 29关注 0票数 0

我尝试过向类的公共部分添加一个to_string()函数,但我正在寻找一个方法,比如C#中的override。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-16 02:46:09

toString()是一种S3遗传,因此可以使用toString.{className}为您的类定义它

代码语言:javascript
复制
MyClass <- R6::R6Class(
  "MyClass",
  list(i = 0)
)

toString.MyClass <- function(x, ...) {
  paste("i is", x$i)
}

my_object <- MyClass$new()
toString(my_object)
#> [1] "i is 0"
my_object$i <- 1
toString(my_object)
#> [1] "i is 1"

通过查看源代码,您可以看到它是一个S3泛型

代码语言:javascript
复制
toString
#> function (x, ...) 
#> UseMethod("toString")
#> <bytecode: 0x55fb2afe7d68>
#> <environment: namespace:base>

UseMethod意味着它将基于第一个参数(x)的类转发调用,如果没有给出特定类的toString实现,则将调用toString.default()

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

https://stackoverflow.com/questions/68348973

复制
相关文章

相似问题

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