ルビーハッシュ
ハッシュは、「key」=>「value」のようなキーと値のペアのコレクションです。ハッシュは配列に似ていますが、インデックス付けが数値の使用に限定されない点が異なります。
ハッシュのインデックス (または「キー」) には、ほぼすべてのオブジェクトを使用できます。
ハッシュは配列に似ていますが、重要な違いがあります。ハッシュの要素には特定の順序がありません。 順序が重要な場合は配列を使用してください。
ハッシュの作成
配列と同様に、ハッシュを作成するにはさまざまな方法があります。 new クラス メソッドを使用して空のハッシュを作成できます:
months = Hash.new
new を使用してデフォルト値を持つハッシュを作成することもできます。デフォルト値のないハッシュは nil:
months = Hash.new( "month" ) 或 months = Hash.new "month"
にアクセスするときデフォルト値を持つハッシュ内のキー。キーまたは値が存在しない場合、ハッシュにアクセスするとデフォルト値が返されます:
#!/usr/bin/ruby months = Hash.new( "month" ) puts "#{months[0]}" puts "#{months[72]}"
上記の例の出力は次のとおりです:
month month
#!/usr/bin/ruby H = Hash["a" => 100, "b" => 200] puts "#{H['a']}" puts "#{H['b']}"
上記操作例の出力結果は次のとおりです:
100 200
次の例に示すように、任意の Ruby オブジェクトをキーまたは値、または配列として使用できます:
[1,"jan"] => "January"
ハッシュ組み込みメソッド
を呼び出す必要がある場合Hash メソッドの場合、最初に Hash オブジェクトをインスタンス化する必要があります。 Hash オブジェクトのインスタンスを作成する方法は次のとおりです:
Hash[[key =>|, value]* ] or Hash.new [or] Hash.new(obj) [or] Hash.new { |hash, key| block }
これは、指定されたオブジェクトが設定された新しいハッシュを返します。これで、作成されたオブジェクトを使用して、利用可能なメソッドを呼び出すことができます。例:
#!/usr/bin/ruby $, = ", " months = Hash.new( "month" ) months = {"1" => "January", "2" => "February"} keys = months.keys puts "#{keys}"
上記の例の出力結果は次のとおりです:
["1", "2"]
以下はパブリック ハッシュ メソッドです (hash が Hash オブジェクトであると仮定します):
シリアル番号 | 方法と説明 |
---|---|
1 | hash == other_hash 2つのハッシュに同じ数のキーと値のペアがあるかどうか、およびキーと値のペアが互いに一致するかどうかを確認して判断します2 つのハッシュが同じ番号を持つかどうか。 |
2 | hash.[key] キーを使用してハッシュの値を参照します。キーが見つからない場合は、デフォルト値が返されます。 |
3 | hash.[key]=value valueで指定された値を、keyで指定されたキーに関連付けます。 |
4 | hash.clear ハッシュからすべてのキーと値のペアを削除します。 |
5 | hash.default(key = nil) hashのデフォルト値、またはdefault=で設定されていない場合はnilを返します。 (キーがhashに存在しない場合、[]はデフォルト値を返します。) |
6 | hash.default = obj hashのデフォルト値を設定します。 |
7 | hash.default_proc hashがブロック経由で作成された場合は、ブロックを返します。 |
8 | hash.delete(key) [or] array.delete(key) { |key| block } keyを介してhashからキーと値のペアを削除します。ブロックが使用されていて、一致するキーと値のペアが見つからない場合は、ブロックの結果が返されます。これを delete_if と比較してください。 |
9 | hash.delete_if { |key,value| block } blockがtrueであるブロックごとに、hashからキーと値のペアを削除します。 |
hash.each { |key,value| block } hashを反復し、keyごとにブロックを1回呼び出し、key-valueを2要素の配列として渡します。 | |
hash.each_key { |key| block } hashを反復し、keyごとにブロックを1回呼び出し、keyをパラメータとして渡します。 | |
hash.each_key { |key_value_array| block } hashを走査し、keyごとにブロックを1回呼び出し、keyとvalueをパラメータとして渡します。 | |
hash.each_value { |value| block } hashを反復し、keyごとにブロックを1回呼び出し、valueを引数として渡します。 | |
hash.empty?ハッシュが空(キーと値のペアが含まれていない)かどうかを確認し、 trueまたはfalseを返します。 | |
hash.fetch(key [, デフォルト] ) [または] | hash.fetch(key) { | key |指定された key を使用して hash から値を返します。 key が見つからず、他のパラメータが指定されていない場合は、IndexError 例外がスローされます。default が指定されている場合は、default が返され、オプションのブロックが指定されている場合は、ブロックの結果が返されます。 |
16 | hash.has_key?(key) [or] hash.include?(key) [or] hash.key?(key) [or] hash.member?(key) にチェックを入れます指定された key がハッシュ内に存在するかどうか、true または false を返します。 |
17 | hash.has_value?(value) ハッシュに指定されたvalueが含まれているかどうかを確認します。 |
18 | hash.index(value) 指定されたvalueのハッシュ内のkeyを返すか、一致する値が見つからない場合はnilを返します。 |
19 | hash.indexes(keys) 指定されたキーの値で構成される新しい配列を返します。見つからないキーにはデフォルト値が挿入されます。このメソッドは非推奨です。select を使用してください。 |
20 | hash.indices(keys) 指定されたキーの値で構成される新しい配列を返します。見つからないキーにはデフォルト値が挿入されます。このメソッドは非推奨です。select を使用してください。 |
21 | hash.inspect ハッシュの出力された文字列バージョンを返します。 |
22 | hash.invert 新しいハッシュを作成し、ハッシュのキーと値を反転します。つまり、新しいハッシュでは、hash内のキーが値になり、その値がキーになります。 |
23 | hash.keys hash のキーを使用して新しい配列を作成します。 /td> |
24 | hash.length ハッシュのサイズまたは長さを整数として返します。 |
25 | hash.merge(other_hash) [or] hash.merge(other_hash) { |key, oldval, newval| block } hashとother_hashを含む新しいハッシュを返します ハッシュと other_hash 内の重複キーを使用してキーと値のペアを書き換えます。 |
26 | hash.merge!(other_hash) [or] hash.merge!(other_hash) { |key, oldval, newval| block } merge と同じですが、実際にはハッシュが変更されています。 |
27 | hash.rehash 各keyの現在の値に基づいてhashを再構築します。このメソッドは、挿入後に値が変更された場合、ハッシュのインデックスを再作成します。 |
28 | hash.reject { |key, value| block } trueのblockのキーと値のペアごとに新しいハッシュを作成します。 |
29 | hash.reject! { |key, value| block } は reject と同じですが、実際にはハッシュが変更されます。 |
30 | hash.replace(other_hash) hashの内容をother_hashの内容に置き換えます。 |
31 | hash.select { |key, value| block } blockがtrueを返すhashのキーと値のペアで構成される新しい配列を返します。 |
32 | hash.shift hash からキーと値のペアを削除し、そのキーと値のペアを 2 要素の配列として返します。 |
33 | hash.size サイズまたはハッシュの長さを整数として返します。 |
34 | hash.sort hashをキーと値のペアの配列を含む2次元配列に変換し、ソートします。 |
35 | hash.store(key, value) は、キーと値のペアをhashに保存します。 |
36 | hash.to_a ハッシュから二次元配列を作成します。各キーと値のペアは配列に変換され、これらの配列はすべて配列に格納されます。 |
37 | hash.to_hash はハッシュ(自分自身)を返します。 |
38 | hash.to_s hashを配列に変換し、その配列を文字列に変換します。 |
39 | hash.update(other_hash) [or] hash.update(other_hash) {|key, oldval, newval| block} hashとother_hashを含む新しいハッシュを返します、hash と other_hash 内の重複キーを使用してキーと値のペアを書き換えます。 |
40 | hash.value?(value) hashに指定されたvalueが含まれているかどうかを確認します。 |
41 | hash.values は、hashのすべての値を含む新しい配列を返します。 |
42 | hash.values_at(obj, ...) 指定されたキーに関連付けられたhashの値を含む新しい配列を返します。 |