Red 语言中的并行列表赋值
Parallel list assignment in Red language
我有 2 个列表:
alist: [a b c d]
blist: [1 2 3 4]
(实际上它们是长列表)。如何一次性将alist中的变量赋值给blist中对应的值?因此a变成1,b变成2等等。
我试过了:
foreach i alist j blist [i: j]
但它给出以下错误:
*** Script Error: j has no value
*** Where: foreach
*** Stack:
我也试过:
i: 1
while [true] [
if i > (length? alist) [break]
alist/i: blist/i
i: i + 1
]
但它也不起作用:
*** Script Error: cannot set none in path alist/i:
*** Where: set-path
*** Stack:
alist/i
和 blist/i
return none
(使用打印命令检查)。
其他语言也有类似的问题,例如:Parallel array assignment in PHP and Parallel assignment in Java?。感谢您的帮助。
简单的方法,将一个列表设置为另一个列表
>> set alist blist
== [1 2 3 4]
>> a
== 1
>> b
== 2
>> c
== 3
>> d
== 4
>> alist
== [a b c d]
>> reduce alist
== [1 2 3 4]
>> get alist/1
== 1
以及繁琐的方式
>> forall alist [alist/1: blist/(index? alist) ]
>> i: 2
== 2
>> get alist/:i
== 2
我有 2 个列表:
alist: [a b c d]
blist: [1 2 3 4]
(实际上它们是长列表)。如何一次性将alist中的变量赋值给blist中对应的值?因此a变成1,b变成2等等。
我试过了:
foreach i alist j blist [i: j]
但它给出以下错误:
*** Script Error: j has no value
*** Where: foreach
*** Stack:
我也试过:
i: 1
while [true] [
if i > (length? alist) [break]
alist/i: blist/i
i: i + 1
]
但它也不起作用:
*** Script Error: cannot set none in path alist/i:
*** Where: set-path
*** Stack:
alist/i
和 blist/i
return none
(使用打印命令检查)。
其他语言也有类似的问题,例如:Parallel array assignment in PHP and Parallel assignment in Java?。感谢您的帮助。
简单的方法,将一个列表设置为另一个列表
>> set alist blist
== [1 2 3 4]
>> a
== 1
>> b
== 2
>> c
== 3
>> d
== 4
>> alist
== [a b c d]
>> reduce alist
== [1 2 3 4]
>> get alist/1
== 1
以及繁琐的方式
>> forall alist [alist/1: blist/(index? alist) ]
>> i: 2
== 2
>> get alist/:i
== 2