< :前の番号
^ :番号順リスト
> :次の番号
P :前の記事(スレッド移動)
N :次の記事(スレッド移動)
|<:前のスレッド
>|:次のスレッド
^ :返事先
_:自分への返事
>:同じ返事先を持つ記事(前)
<:同じ返事先を持つ記事(後)
---:分割してスレッド表示、再表示
| :分割して(縦)スレッド表示、再表示
~ :スレッドのフレーム消去
.:インデックス
..:インデックスのインデックス
Issue #15111 has been reported by liwii (Koki Ryu).
----------------------------------------
Feature #15111: Make the number of arguments of `Hash#merge` variable
https://bugs.ruby-lang.org/issues/15111
* Author: liwii (Koki Ryu)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
# Abstract
Make the number of arguments of `Hash#merge` variable.
# Background
In many websites such as Stack Overflow and Qiita, many people are seeking how to merge more than three hashes.
https://stackoverflow.com/questions/19548496/how-to-merge-multiple-hashes-in-ruby
https://qiita.com/hc0208/items/c662f5189fa383872f4e
https://stackoverrun.com/ja/q/4997431
Many ways, like using `Enumerable#inject` or calling `Hash#merge` multiple times, are proposed, but both don't seem intuitive. Especially when using block in `Hash#merge`, the code becomes too complicated.
# Proposal
Change the argument of `Hash#merge` from singular to variable length.
# Implementation
https://github.com/ruby/ruby/pull/1951
# Evaluation
The code to merge more than three hashes became much simpler and more intuitive.
before
```ruby
hash1.merge(hash2).merge(hash3)
[hash1, hash2, hash3].inject do |result, part|
result.merge(part) { |key, value1, value2| key + value1 + value2 }
end
```
after
```ruby
hash1.merge(hash2, hash3)
hash1.merge(hash2, hash3) { |key, value1, value2| key + value1 + value2 }
```
# Discussion
# Summary
The change is needed to make `Hash#merge` more useful and intuitive.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>