我有以下代码段:
y <- 1
g <- function(x) {
y <- 2
UseMethod("g")
}
g.numeric <- function(x) y
g(10)
# [1] 2
我不明白,为什么可以访问y
中的g.numeric <- function(x) y
。据我所知,范围就在通用(g <- ...)
的定义范围内。有谁可以向我解释,这怎么可能?
答案 0 :(得分:4)
可以在?UseMethod
帮助页面
UseMethod创建一个新的函数调用,其参数在进入泛型时匹配。在调用UseMethod之前定义的任何局部变量都将保留
因此,调用函数UseMethod
中定义的任何局部变量都作为局部变量传递给下一个函数。你可以用
g.numeric <- function(x) ls() #lists all variables in current environment
g(10)
# [1] "x" "y"
g.numeric(10)
# [1] "x"