我尝试过向类的公共部分添加一个to_string()函数,但我正在寻找一个方法,比如C#中的override。
发布于 2021-07-16 02:46:09
toString()是一种S3遗传,因此可以使用toString.{className}为您的类定义它
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泛型
toString
#> function (x, ...)
#> UseMethod("toString")
#> <bytecode: 0x55fb2afe7d68>
#> <environment: namespace:base>UseMethod意味着它将基于第一个参数(x)的类转发调用,如果没有给出特定类的toString实现,则将调用toString.default()。
https://stackoverflow.com/questions/68348973
复制相似问题