假定變量聲明是局部的語言中存在一個常見問題。你如何在封閉範圍中獲得變量。在封閉範圍內修改變量
在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