【Ruby3.x】Hash::merge()メソッドの使い方
mergeメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
mergeメソッドは、レシーバであるHashオブジェクトと、引数として渡された別のHashオブジェクトを結合し、新しいHashオブジェクトを生成するメソッドです。このメソッドの大きな特徴は、呼び出し元のHashオブジェクトを一切変更しない非破壊的な操作である点です。結合の結果として返される新しいHashオブジェクトには、両方のハッシュに含まれるすべてのキーと値のペアが収められます。
基本的な動作として、もしレシーバのハッシュと引数で渡されたハッシュの両方に同じキーが存在する場合、引数として渡されたハッシュの値が優先され、新しいハッシュではその値が採用されます。これは、後から与えられた情報で古い情報を上書きするような場面で直感的に利用できます。
しかし、単に上書きするだけでなく、重複するキーの値に対して独自の結合ロジックを適用したい場合もあります。そのようなときには、mergeメソッドにブロックを渡すことで挙動をカスタマイズできます。ブロックは重複したキーと、レシーバのハッシュに対応する値、そして引数ハッシュに対応する値の3つの引数を受け取ります。このブロックの戻り値が、新しいハッシュにおける重複キーの値として設定されます。例えば、数値を合計したり、文字列を連結したり、より複雑なデータ構造を結合したりといった、多様なデータ結合戦略を柔軟に実装することが可能です。
この柔軟性により、mergeメソッドは設定ファイルの読み込みとデフォルト値の適用、異なるデータソースからの情報統合など、多岐にわたるシナリオでデータの取り扱いを効率化します。
構文(syntax)
1{ key1: "value1", key2: "value2" }.merge({ key3: "value3", key4: "value4" })
引数(parameters)
rest
- other_hash: マージする他のハッシュオブジェクト、またはキーと値のペアを交互に含む配列。
- block: ハッシュがマージされる際に、キーが重複した場合の値を決定するためのブロック。
戻り値(return)
Hash
mergeメソッドは、レシーバーとなるハッシュと引数として渡されたハッシュを結合した新しいハッシュを返します。キーが重複する場合は、引数として渡されたハッシュの値で上書きされます。