代码之家  ›  专栏  ›  技术社区  ›  rnso

以红色语言将多个列表中的值转换为一个列表

  •  2
  • rnso  · 技术社区  · 7 年前

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

    我有2个系列:

    a: [1 2 3]
    b: [4 5 6 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,无法使用。

    1 回复  |  直到 7 年前
        1
  •  2
  •   sqlab    7 年前

    只需附加

    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]
    

    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 ]