为什么这个动态作用域示例出现错误?

问题描述 投票:0回答:1

我一直在网络上进行筛选,以了解动态范围界定的工作原理,我觉得我已经掌握了它。但是当我向 Bing AI 询问其定义时,我得到了以下伪代码示例,其中指出以下用于动态范围界定的伪代码应打印 x = 30。

x = 10
function f() {
  x = 20
  function g() {
    print x
  }
  g()
}
function h() {
  x = 30
  f()
}
h()

现在我认为它应该是 20,因为在动态作用域中,您会在调用堆栈中查看变量的值。在这种情况下,调用堆栈应该是 h()->f()->g() 并且 x 的值最近在 f() 中定义,即 20。因此,它应该打印 20。但是, bing ai 坚持认为无论我说什么都应该是 30。现在我怀疑自己,想知道我是否误解了动态范围。在这个例子中我哪里做错了?

scope language-agnostic lexical-scope dynamic-scope
1个回答
0
投票

chat.openai.com 与您的含义相同:

我不知道这个链接是否有效,但它是:https://chat.openai.com/c/a21e6856-fecf-48a7-ae15-8428ea749959

© www.soinside.com 2019 - 2024. All rights reserved.