概要
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] |