我无法在f中更改全局变量a的值,因为它与局部变量具有相同的名称:当函数返回时,a仍然是1而不是12。
a: 1
f: func[a][set 'a a]
>> f 12
== 12
>> a
== 1
如何引用全局变量a?是不是应该只引用全局变量?我是否有义务更改我的本地变量名称,或者是否有办法保留这两个名称?
答案 0 :(得分:3)
使用system/words/
路径前缀强制对全局上下文中的单词进行读写访问:
>> a: 1
>> f: func[a][system/words/a: a]
== func [a][system/words/a: a]
>> f 12
== 12
>> a
== 12