【发布时间】:2012-08-07 12:18:32
【问题描述】:
考虑下面的例子:
> x=2
> myfun = function(y) x*y
> myfun(3)
[1] 6
> x=4
> myfun(3)
[1] 12
我将如何定义 myfun 以使其定义保持 x 的值,例如在定义时的值,而不是对 x 的引用? (即,第二次调用 myfun(3) 也产生 6 而不是 12)。
编辑:更改标题以删除不正确的术语。
【问题讨论】:
-
这是可能的,但有点奇怪。你能解释一下你为什么要这样做吗?无论如何,您的标题具有误导性(或者可能是错误的)。您的函数正在环境链中查找
value。此处未引用任何内容。 -
我同意@Andrie 的观点,很难为此设想一个用例。也许你想要的是一个闭包?
-
我的术语可能不正确。我所说的引用的意思是函数的主体包含“x”而不是 x 在定义 (2) 时所持有的值。我希望正文不包含“x”,即拍摄快照。为什么你觉得这很奇怪?
-
@AriB.Friedman Closures 绝对可以做到这一点。我可能会修改我的答案以反映这一点。
-
@mitchus 这有点奇怪,因为通常如果你想对变量值进行快照,你会在代码中这样做。
标签: r