R语言:编写包装函数时如何从父函数正确获取func参数?
R包装函数中获取父函数
func参数的正确方式 你的写法本身就是正确的——R中的闭包(嵌套函数)会自动捕获并保留父函数环境中的变量,所以嵌套函数里直接调用func(x)就能正常使用父函数传入的func参数。
举个实际的例子验证:
# 定义包装函数,添加打印参数的额外功能 foo <- function(func) { function(x) { # 额外功能:打印输入的参数 cat("当前传入的参数是:", x, "\n") # 调用被包装的函数 func(x) } } # 测试:包装一个计算平方的函数 square <- function(x) x^2 wrapped_square <- foo(square) # 调用包装后的函数 wrapped_square(3)
运行后会输出:
当前传入的参数是: 3
[1] 9
如果需要更明确地指定从父环境获取func,也可以用get("func", envir = parent.env(environment())),但这属于冗余写法,日常使用直接写func就足够清晰简洁。
内容的提问来源于stack exchange,提问作者Deeproad
相关产品推荐
相关产品推荐

