Ruby_Array_33

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

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

インスタンスメソッド

join(sep = $,) -> String
  • 配列の要素を文字列sepを間に挟んで連結した文字列を返す
    • $,はデフォルトnilの特殊変数
    • 文字列でない要素に対しては、to_strがあればto_str、なければto_sした結果を連結する
    • 要素が配列であれば再帰的に (同じsepを利用して) joinした文字列を連結する
      • 列要素が自身を含むような無限にネストした配列に対してはArgumentErrorとなる
irb(main):001:0> [1, 2, 3].join
=> "123"
irb(main):001:0> [1, true, false, 2].join
=> "1truefalse2"

irb(main):002:0> true.to_s
=> "true"

irb(main):003:0> false.to_s
=> "false"
irb(main):001:0> [1, 2, ['a', 'b', 'c'], 3, 4].join
=> "12abc34"

irb(main):002:1> [1, 2, {a: 'a', b: 'b'}, 3, 4].join
=> "12{:a=>\"a\", :b=>\"b\"}34"

irb(main):003:0> {a: 'a', b: 'b'}.to_s
=> "{:a=>\"a\", :b=>\"b\"}"
irb(main):001:0> [1, 2, 3].join('_')
=> "1_2_3"
irb(main):001:0> [1, 2, ['a', 'b', 'c'], 3, 4].join
=> "12abc34"
irb(main):001:0> arr = [1, 2, 3]
=> [1, 2, 3]

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

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

irb(main):004:0> arr.join
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):4:in `<main>'
        1: from (irb):4:in `join'
ArgumentError (recursive array join)