假定变量声明是局部的语言中存在一个常见问题。你如何在封闭范围中获得变量。在封闭范围内修改变量
在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}")
这是行不通的。我们得到name
在set_name
未使用的警告,并且start
中的name
的值永远不会更改。
在类似Lua,Javascript或Scheme的语言中,显式标记了局部变量,因此可以在范围栈中找到未标记的变量。在Python中没有这样的标记,所以这是不可能的。在Python中,您可以获得全局(顶级)变量,并且我也在Opa中找到了@toplevel
指令。但我对范围链中的中间点感兴趣。
有解决方法,当然,通过使用记录,但是有直接路由吗?
谢谢,这是正确的最小改变解决方案。 – Ian
顺便提一下链接可能已经改变。这对我有用:http://opalang.org/resources/doc/index.html#reference.opa.html/!/value_stdlib.core.Reference – Ian