假设变量声明是本地的,语言中存在一个常见问题。您如何获得封闭范围内的变量。
欧巴有办法吗?
例如:
start() =
name = Random.string(5)
set_name(new_name) =
old_name = name
name = new_name
log("User {old_name} changed name to {new_name}")
这行不通。name
我们得到一个in 未使用的警告,并且inset_name
的值永远不会改变。name
start
在 Lua、Javascript 或 Scheme 等语言中,有明确的局部变量标记,因此可以在范围堆栈中找到未以这种方式标记的变量。在 Python 中没有这样的标记,所以这是不可能的。在 Python 中,您可以获取全局(顶级)变量,我@toplevel
也在 Opa 中找到了该指令。但我对范围链中的中间点感兴趣。
当然,有一些解决方法,通过使用记录,但有直接的途径吗?