gpt4 book ai didi

R 函数返回一个函数......和变量范围

转载 作者:行者123 更新时间:2023-12-04 23:00:13 25 4
gpt4 key购买 nike

我正在学习返回其他函数的函数。例如:

foo1 <- function()
{
bar1 <- function()
{
return(constant)
}
}

foo2 <- function()
{
constant <- 1
bar2 <- function()
{
return(constant)
}
}

假设,现在,我声明函数 f1f2如下:
constant <- 2
f1 <- foo1()
f2 <- foo2()

然后看起来它们具有相同的函数定义:
> f1
function()
{
return(constant)
}
<environment: 0x408f048>
> f2
function()
{
return(constant)
}
<environment: 0x4046d78>
>

但是这两个功能是不同的。例如:
> constant <- 2
> f1()
[1] 2
> f2()
[1] 1

我的问题:为什么具有相同函数定义的两个函数产生不同的结果是合法的?

我明白 foo1将常量视为全局变量,而 foo2作为一个常量变量,但从函数定义中肯定无法判断出来吗?

(我可能遗漏了一些基本的东西。)

最佳答案

肯定不一样,环境不一样。试试 ls(environment(f1))然后 ls(environment(f2))然后 get('constant', environment (f1))f2 相同

关于R 函数返回一个函数......和变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27581141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com