为什么变量不会从 Red 语言的循环中改变
Why variables not altering from a loop in Red language
我想改变循环中的一系列变量,但以下代码不起作用:
a: 10
b: 20
c: 30
print reduce [a b c] ; output is 10 20 30 as expected
varnames: [a b c] ; make a series of variables
foreach i varnames [ ; loop to convert each to 0
i: 0
]
print "After conversion loop: "
print reduce [a b c] ; values are still 10 20 30 (expected 0 0 0)
在 运行 这段代码之后,我希望 a
、b
、c
的值被更改,但它们不是:
>> print reduce [a b c]
10 20 30
问题出在哪里?
>> set varnames: [a b c] [10 20 30]
== [10 20 30]
>> foreach i varnames [set i 0]
== 0
>> reduce varnames
== [0 0 0]
你从循环中给了我一个值,然后给它一个不同的值 0,但你实际上没有改变我引用的词。 set
允许您这样做。
还有一个最短的解决方案
>> set [a b c] 0
== 0
>> reduce [a b c]
== [0 0 0]
还有一个
set set 'varnames [a b c] [0]
>> print probe varnames
[a b c]
0 0 0
我想改变循环中的一系列变量,但以下代码不起作用:
a: 10
b: 20
c: 30
print reduce [a b c] ; output is 10 20 30 as expected
varnames: [a b c] ; make a series of variables
foreach i varnames [ ; loop to convert each to 0
i: 0
]
print "After conversion loop: "
print reduce [a b c] ; values are still 10 20 30 (expected 0 0 0)
在 运行 这段代码之后,我希望 a
、b
、c
的值被更改,但它们不是:
>> print reduce [a b c]
10 20 30
问题出在哪里?
>> set varnames: [a b c] [10 20 30]
== [10 20 30]
>> foreach i varnames [set i 0]
== 0
>> reduce varnames
== [0 0 0]
你从循环中给了我一个值,然后给它一个不同的值 0,但你实际上没有改变我引用的词。 set
允许您这样做。
还有一个最短的解决方案
>> set [a b c] 0
== 0
>> reduce [a b c]
== [0 0 0]
还有一个
set set 'varnames [a b c] [0]
>> print probe varnames
[a b c]
0 0 0