gpt4 book ai didi

language-agnostic - 词法作用域和静态作用域有什么区别?

转载 作者:行者123 更新时间:2023-12-02 01:20:33 24 4
gpt4 key购买 nike

R programing for those coming from other languages约翰·库克这样说

R uses lexical scoping while S-PLUS uses static scope. The difference can be subtle, particularly when using closures.

我觉得这很奇怪,因为我一直认为词法作用域和静态作用域是同义词。

词法和静态作用域是否有不同的属性,或者这种区别是否因社区、人与人而异?如果是这样,一般的阵营是什么以及我如何区分它们,以便我可以更好地理解某人使用这些词时的意思。

最佳答案

Wikipedia (并且我)同意您的观点,术语“词法作用域”和“静态作用域”是同义词。 This Lua discussion试图做出区分,但指出人们对于这种区别是什么并没有达成一致。 :-)

在我看来,尝试的区别与访问不同函数激活记录(“堆栈 block ”,如果你愿意的话)中的名称有关,而不是最近执行记录,这主要(仅?)出现在嵌套函数中:

function f:
var x
function h:
var y
use(y) -- obviously, accesses y in current activation of h
use(x) -- the question is, which x does this access?

对于词法作用域,答案是“f 的激活调用了 h 的激活”,对于动态作用域,答案是“最近的激活,具有任何名为 x 的变量”(可能不是 f)。另一方面,如果语言根本禁止使用x,那么就不存在“这是哪个x”的问题,因为答案是“错误”。 :-) 看起来有些人使用“静态作用域”来指代第三种情况。

关于language-agnostic - 词法作用域和静态作用域有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10262316/

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