UseMethod在R中的工作方式
下面我的演绎推理是,输出应该是“char 10” 根据使用方法的文件:UseMethod在R中的工作方式,r,R,下面我的演绎推理是,输出应该是“char 10” 根据使用方法的文件: 查找调用函数的上下文(泛型):这将为原始调用提供未赋值的参数 计算要用于分派的对象(通常是参数),并找到方法(可能是默认方法)或抛出错误 创建一个用于评估方法的环境,并在该环境中插入特殊变量(见下文)。还要复制泛型环境中不是形式(或实际)参数的任何变量 将参数列表设置为与方法的形式匹配的调用参数 如果我理解正确,在步骤2中,x将被计算为“a”。但在步骤3中,将另一个值为10的变量x插入到环境中以执行该方法 现在不是把x改写成
[1] "char a"
当您调用h(“a”)
时,它将调用h.numeric
,因为它是作为参数提供给的对象的类UseMethod(类)
“使用方法”)
因此,在调用泛型函数时,下面将给出
“char 10”
作为输出
h <- function(x) {
x <- 10
UseMethod("h", x)
}
h("a")
#[1] "num a"
zz那么当你调用,h(“a”)
时,执行的函数是h,如果调用了h(7)
,那么x我想这就是第3节中解释的。创建用于评估方法的环境。。。复制任何非形式(或实际)参数的泛型变量。
h <- function(x) {
x <- 10
UseMethod("h")
}
h("a")
#[1] "char a"
h <- function(x) {
x <- 10
UseMethod("h", x)
}
h("a")
#[1] "num a"
zz <- function(x) {
UseMethod("zz", "w")
}
zz.character <- function(x){ paste("char", x)}
zz.numeric <- function(x) { paste("num", x)}
zz(10)
#[1] "char 10"