Ruby_Array_14

この記事は、以下のドキュメントを改変(自分なりに整理)して利用しています。

class Array (Ruby 3.0.0 リファレンスマニュアル)

インスタンスメソッド

concat(other) -> self
  • 配列otherを自身の末尾に破壊的に連結する
irb(main):001:0> arr = [1, 2, 3]
=> [1, 2, 3]

irb(main):002:0> brr = ['a', 'b']
=> ["a", "b"]

irb(main):003:0> arr.concat(brr)
=> [1, 2, 3, "a", "b"]

irb(main):004:0> arr
=> [1, 2, 3, "a", "b"]

irb(main):005:0> brr
=> ["a", "b"]

irb(main):006:0> brr[1].capitalize!
=> "B"

irb(main):007:0> arr
=> [1, 2, 3, "a", "B"]

# memo
# concatも元のotherに対して破壊的な変更を加えると影響する
irb(main):001:0> arr = [1, 2, 3]
=> [1, 2, 3]

irb(main):002:1> arr.concat(1)
Traceback (most recent call last):
        5: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `<main>'
        4: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `load'
        3: from /Users/mfham/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/irb-1.3.0/exe/irb:11:in `<top (required)>'
        2: from (irb):2:in `<main>'
        1: from (irb):2:in `concat'
TypeError (no implicit conversion of Integer into Array)

concat(*other_arrays) -> self

  • other_arraysの要素を自身の末尾に破壊的に連結する
irb(main):001:0> arr = [1, 2, 3]
=> [1, 2, 3]

irb(main):002:0> brr = [5, 6]
=> [5, 6]

irb(main):003:0> crr = [10, 11]
=> [10, 11]

irb(main):004:0> arr.concat(brr, crr)
=> [1, 2, 3, 5, 6, 10, 11]

irb(main):005:0> arr
=> [1, 2, 3, 5, 6, 10, 11]

irb(main):006:0> brr
=> [5, 6]

irb(main):007:0> crr
=> [10, 11]
irb(main):001:0> arr = [1, 2, 3]
=> [1, 2, 3]

irb(main):002:0> arr.concat(arr, arr)
=> [1, 2, 3, 1, 2, 3, 1, 2, 3]

irb(main):003:0> arr
=> [1, 2, 3, 1, 2, 3, 1, 2, 3]

メモ

  • concatはメソッド名に"!"がついていないけど破壊的なので注意