👌
[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"
Discussion