list - 使用 Red 语言从多个列表中获取值到一个列表

标签 list rebol red

我想将 2 个系列的值合并为一个系列,但它不起作用:

我有 2 个系列:

a: [1 2 3]
b: [4 5 6 7]

我想获取一个列表中的所有值,以便我可以通过 allv/1、allv/2...allv/7 来访问它们。

以下不起作用,因为它生成一系列系列而不是一系列值:

allv:  [a b]
print allv     ; => prints all 6 values, but following do not work: 
print allv/1   ; => gives a  (desired is 1)
print allv/2   ; => gives b  (desired is 2)
print allv/3   ; => gives none (desired is 3)

我尝试使用以下函数来组合一个系列中的值:

mycombine: function [ll][
    temp: []
    foreach l ll [
        repeat i length? l [
            temp: append temp l/:i ] ]
    temp]

mycombine [a b]

但是上面给出了错误:

*** Script Error: length? does not allow word! for its series argument
*** Where: length?
*** Stack: rncombine 

该系列已转换为 Word,但无法使用。

我该如何解决这个问题?

最佳答案

只需附加

a: [1 2 3]
b: [4 5 6 7]
c: [8 9 10]
d: [11 12 13 14]
>> allv: append a b
== [1 2 3 4 5 6 7]
>> a
== [1 2 3 4 5 6 7]

做你想做的事。但要注意,即使 a 包含所有值,因为您已将 b 的值附加到 block a 中。如果你想要一个新的 block ,你必须使用

allv: append copy a b

如果您想添加更多系列,可以这样做

>> foreach x [a b c d] [ append [] reduce x]
== [1 2 3 4 5 6 7 8 9 10 11 12 13 14]

get x 也可以工作,而不是减少。 另一种组合方式

>> compose [(a) (b) (c)]
== [1 2 3 4 5 6 7 8 9 10 ]

关于list - 使用 Red 语言从多个列表中获取值到一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46359664/

相关文章:

rebol - 加载 HashMap - 对象键对

python - 如何根据 python 中的字符串从列表中创建子列表?

python - Python 中的程序控制流

path - 红语获取不同路径

http-post - 如何在Rebol3中通过POST读取大量CGI数据?

arrays - 红色/系统中指向 'array' 的指针

list - 使用循环将 map 元素添加到列表

python - Python 中对数字进行划分的几种方法

file - Rebol 2 在 Windows 8 中创建文件时存在错误

红色的 REBOL 方法