如何更改与 Rebol 或 Red 中的局部变量同名的全局变量?
How can I change a global variable that have the same name as a local variable in Rebol or Red?
我无法在 f 中更改全局变量 a 的值,因为它与局部变量同名:当函数 returns 时,a 仍然是 1 而不是 12。
a: 1
f: func[a][set 'a a]
>> f 12
== 12
>> a
== 1
如何引用全局变量 a ? set 不应该只引用全局变量吗?我是否必须为此更改我的局部变量名称,或者是否有办法同时保留这两个名称?
使用 system/words/
路径前缀强制读取或写入全局上下文中的单词:
>> a: 1
>> f: func[a][system/words/a: a]
== func [a][system/words/a: a]
>> f 12
== 12
>> a
== 12
我无法在 f 中更改全局变量 a 的值,因为它与局部变量同名:当函数 returns 时,a 仍然是 1 而不是 12。
a: 1
f: func[a][set 'a a]
>> f 12
== 12
>> a
== 1
如何引用全局变量 a ? set 不应该只引用全局变量吗?我是否必须为此更改我的局部变量名称,或者是否有办法同时保留这两个名称?
使用 system/words/
路径前缀强制读取或写入全局上下文中的单词:
>> a: 1
>> f: func[a][system/words/a: a]
== func [a][system/words/a: a]
>> f 12
== 12
>> a
== 12