👌

[Feature #21455] Array#join にブロック引数を渡せるようにする提案

に公開

[Feature #21455] Add a block argument to Array#join

  • Array#join にブロック引数を渡せるようにする提案
  • 以下のようなコードがあった場合に
hex_string = string.bytes.map do |byte|
  format('%02X', byte)
end.join(' ')
  • 以下のように #join のブロックで要素を変換できるようにする提案
hex_string = string.bytes.join(' ') do |byte|
  format('%02X', byte)
end
  • これなんですが #join はあくまでも結合用でありマッピング用ではないという理由で Reject されている
  • https://bugs.ruby-lang.org/issues/21455#note-5
  • 仮に #join がブロックを受け取るのであれば『結合に対するアクション』に関連することを期待する、ともコメントされている
  • それはそう
  • https://bugs.ruby-lang.org/issues/21455#note-4
  • 例えば以下のように条件によって結合文字を変える等
items = ["Apple", "Banana", "Cherry"]

i = 0
str = items.join do
  i += 1
  if i == items.size - 2
    ", and "
  else
    ", "
  end
end

p str #=> "Apple, Banana, and Cherry"
GitHubで編集を提案

Discussion