假定变量声明是本地的语言中存在一个常见问题。如何获取封闭范围内的变量。
Opa有办法吗?
例如:
start() =
name = Random.string(5)
set_name(new_name) =
old_name = name
name = new_name
log("User {old_name} changed name to {new_name}")
这行不通。我们收到一条警告,指出 set_name
中未使用 name
,并且 start
中 name
的值从未更改。
在像Lua、Javascript或Scheme这样的语言中,有显式的局部变量标记,因此可以在作用域堆栈中找到未以这种方式标记的变量。在 Python 中没有这样的标记,所以这是不可能的。在 Python 中,您可以获取全局(顶级)变量,我也在 Opa 中找到了 @toplevel 指令。但我对作用域链中的中间点感兴趣。
当然,有使用记录的解决方法,但是有直接的途径吗?
最佳答案
一种解决方案是使用引用模块:
Reference.create、Reference.get、Reference.set
关于scope - 修改封闭范围内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7197578/