如何在Rebol或Red中更改与局部变量同名的全局变量?

时间:2017-11-04 13:12:22

标签: rebol red

我无法在f中更改全局变量a的值,因为它与局部变量具有相同的名称:当函数返回时,a仍然是1而不是12。

a: 1
f: func[a][set 'a a]
>> f 12
== 12
>> a
== 1

如何引用全局变量a?是不是应该只引用全局变量?我是否有义务更改我的本地变量名称,或者是否有办法保留这两个名称?

1 个答案:

答案 0 :(得分:3)

使用system/words/路径前缀强制对全局上下文中的单词进行读写访问:

>> a: 1
>> f: func[a][system/words/a: a]
== func [a][system/words/a: a]
>> f 12
== 12
>> a
== 12