如何用 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()
。
我已经尝试将 to_string() 函数添加到 Class 的 public 部分,但我正在寻找一种方法,例如 C# 中的覆盖。
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
) 的 class 转发调用,如果没有针对特定 [=给出 24=],将改为调用 toString.default()
。