如何用 R 语言覆盖 R6Class 的 to string 方法?

How can I overwrite the to string method of an R6Class in R language?

我已经尝试将 to_string() 函数添加到 Class 的 public 部分,但我正在寻找一种方法,例如 C# 中的覆盖。

toString() 是 S3 基因,因此可以使用 toString.{className}

为您的 class 定义它
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) 的 class 转发调用,如果没有针对特定 [=给出 24=],将改为调用 toString.default()