【Ruby3.x】Hash::<=()メソッドの使い方
<=メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
<=メソッドは、ハッシュが別のハッシュの「サブセット」であるかを確認するメソッドです。このメソッドは、呼び出し元となるレシーバのハッシュが、引数として渡された別のハッシュに完全に含まれているかどうかを判定するために使用されます。
ここでいう「サブセット」とは、レシーバのハッシュに存在するすべてのキーと、それに対応する値のペアが、引数のハッシュにもすべて同じ形で存在している状態を指します。もしレシーバのハッシュに存在するキーと値のペアが、引数のハッシュに一つでも見つからない場合や、キーは同じでも値が異なるペアが存在する場合には、サブセットとは見なされません。
この比較の結果、レシーバのハッシュが引数のハッシュのサブセットであると判断された場合に true を返します。そうでない場合は false を返します。例えば、h1 = {name: "Alice", age: 30} と h2 = {name: "Alice", age: 30, city: "Tokyo"} があったとします。この場合、h1 <= h2 は true となります。なぜなら、h1 のすべての要素が h2 に含まれているからです。しかし、h2 <= h1 は false となります。これは、h2 の city: "Tokyo" が h1 に存在しないためです。
このメソッドは、ある設定値のセットが別の設定値のセットの一部として有効であるかを検証する場合や、特定の条件の集合がより広い条件の集合に含まれているかを効率的に確認する際に役立ちます。
構文(syntax)
1hash_a = { key1: "value1", key2: "value2" } 2hash_b = { key1: "value1" } 3hash_c = { key1: "value1", key2: "value2", key3: "value3" } 4hash_d = { key1: "value1", key4: "value4" } 5 6# 構文: receiver_hash <= argument_hash 7# レシーバのハッシュが引数のハッシュの部分集合(または等しい)であるかを判定します。 8 9# hash_b は hash_a の部分集合であるため、true 10p hash_b <= hash_a 11 12# hash_a は hash_c の部分集合であるため、true 13p hash_a <= hash_c 14 15# hash_a は hash_b の部分集合ではないため、false 16p hash_a <= hash_b 17 18# hash_a は hash_d の部分集合ではないため、false 19p hash_a <= hash_d 20 21# 等しいハッシュの場合も true 22p ({ same: 1 } <= { same: 1 })
引数(parameters)
other
- other: 比較対象となるHashオブジェクト
戻り値(return)
Boolean
指定されたハッシュが、比較対象のハッシュのすべてのキーと値を含む場合に true を返します。そうでない場合は false を返します。