概要
Rubyの配列同士の演算はPythonのようにブロードキャストされない。加算/減算はそれぞれ和集合/差集合のように扱われる。
配列同士の加算
+~加算は和集合
配列同士を⁺で加算すると双方の和集合となる。
|
1 2 3 4 5 |
a = [1, 2, 3, 4, 5] b = [3, 4, 5, 6, 7] p(a + b) # [1, 2, 3, 4, 5, 3, 4, 5, 6, 7] |
必ずしも重複が削除されるわけではない。
|
1 2 3 4 5 |
c = [1, 1, 2, 3, 4] d = [4, 4, 5, 5, 6, 6] p(c + d) # [1, 1, 2, 3, 4, 4, 4, 5, 5, 6, 6] |
−~減算は差集合
減算の場合、元の配列から重なる要素だけが削除される。下の例ではaとbに共通な[3, 4]が削除され、[5, 6]はもともとaに含まれていないので無視される。
|
1 2 |
p(a - b) # [1, 2] |
積集合の求め方
加算と減算を組み合わせて、2つの配列の席集合に相当する配列が得られる。
|
1 2 |
p(a - (a - b)) # [3, 4, 5] |
要素の追加
<<演算子は左辺の配列に右辺の要素を追加する。連続して複数の要素も追加可能。push()と同じ動作。
|
1 2 3 4 5 6 7 8 |
a = [1, 2, 3] a << 4 p(a) // [1, 2, 3, 4] a << 5 << 6 p(a) // [1, 2, 3, 4, 5, 6] |