Ruby – ハッシュ
ハッシュは、 “employee” => “salary”のようなキーと値のペアの集合です。これは配列に似ていますが、索引付けは整数型索引ではなく、任意のオブジェクト型の任意のキーを介して行われます。
キーまたは値のいずれかによってハッシュをトラバースする順序は任意である可能性があり、一般的には挿入順序にはありません。存在しないキーを持つハッシュにアクセスしようとすると、メソッドはnilを返します。
ハッシュを作成する
配列と同様に、ハッシュを作成するさまざまな方法があります。新しいクラスメソッドを使用して空のハッシュを作成することができます。
months = Hash.new
newを使ってデフォルト値のハッシュを作成することもできます。それ以外の場合はnilだけです
months = Hash.new( "month" ) or 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"]
以下はパブリックハッシュメソッドです(ハッシュが配列オブジェクトであると仮定します)。
Sr.No. | メソッドと説明 |
---|---|
1 | hash == other_hash 2つのハッシュが等しいかどうか、それらが同じ数のキー/値ペアを持つかどうか、およびキー/値ペアが各ハッシュの対応するペアと一致するかどうかに基づいてテストします。 |
2 | hash.[key] キーを使用して、ハッシュから値を参照します。キーが見つからない場合は、デフォルト値を返します。 |
3 | hash.[key] = value valueで指定された値をkeyで指定されたキーに関連付けます。 |
4 | hash.clearすべてのキーと値のペアをハッシュから削除します。 |
5 | hash.default(key = nil)デフォルトでは設定されていなければ、ハッシュのデフォルト値を返します。(キーがハッシュに存在しない場合、[]はデフォルト値を返します)。 |
6 | hash.default = objハッシュのデフォルト値を設定します。 |
7 | hash.default_procハッシュがブロックによって作成された場合はブロックを返します。 |
8 | hash.delete(key) [or]
array.delete(key) { |key| block } キーによるハッシュからキー値ペアを削除します。blockが使用されている場合、ペアが見つからない場合はブロックの結果を返します。delete_ifを比較してください。 |
9 | hash.delete_if { |key,value| block } ブロックが評価するすべてのペアのハッシュからキー値のペアを削除します。 |
10 | hash.each { |key,value| block } ハッシュを反復し、キーごとにブロックを1回呼び出し、キー値を2要素の配列として渡します。 |
11 | hash.each_key { |key| block } ハッシュを反復し、各キーに対してブロックを1回呼び出し、キーをパラメータとして渡します。 |
12 | hash.each_key { |key_value_array| block } で反復ハッシュ、それぞれに対して一度ブロックを呼び出すキー渡して、キーと値のパラメータとしてを。 |
13 | hash.each_key { |value| block } ハッシュを反復し、ブロックごとにキーを 1回呼び出し、valueをパラメータとして渡します。 |
14 | hash.empty?ハッシュが空であるかどうかをテストし(キーと値のペアを含まない)、trueまたはfalseを返します。 |
15 | hash.fetch(key [, default] ) [or]
hash.fetch(key) { | key | block } 指定されたキーのハッシュ値を返します。場合は、キーを見つけることができず、他の引数がない、それが提起はIndexError例外を。デフォルトが与えられている場合は、それが返されます。オプションのブロックが指定されている場合は、その結果が返されます。 |
16 | hash.has_key?(key) [or] hash.include?(key) [or]
hash.key?(key) [or] hash.member?(key) 指定されたキーがハッシュで存在するかどうかをテストし、trueまたはfalseを返します。 |
17 | hash.has_value?(value)ハッシュが指定された値を含むかどうかをテストします。 |
18 | hash.index(value)一致する値が見つからない場合は、指定された値のキーをハッシュ(nil)で返します。 |
19 | hash.indexes(keys)指定されたキーの値で構成される新しい配列を返します。見つからないキーのデフォルト値を挿入します。このメソッドは非推奨です。selectを使用します。 |
20 | hash.indices(keys)指定されたキーの値で構成される新しい配列を返します。見つからないキーのデフォルト値を挿入します。このメソッドは非推奨です。selectを使用します。 |
21 | hash.inspectハッシュのかなりプリント文字列のバージョンを返します。 |
22 | hash.invert新しい作成ハッシュ反転、キーと値のハッシュは、つまり、新しいハッシュでは、キーのハッシュは値と値がキーになるとなります。 |
23 | hash.keysハッシュからのキーで新しい配列を作成します。 |
24 | hash.lengthハッシュのサイズまたは長さを整数として返します。 |
25 | hash.merge(other_hash) [or]
hash.merge(other_hash) { |key, oldval, newval| block } ハッシュとother_hashの内容を含む新しいハッシュを返します。ハッシュのペアをother_hashのものと重複するキーで上書きします。 |
26 | hash.merge!(other_hash) [or]
hash.merge!(other_hash) { |key, oldval, newval| block } マージと同じですが、変更はその場で行われます。 |
27 | hash.rehash各キーの現在の値に基づいてハッシュを再構築します。挿入されてから値が変更された場合、このメソッドはハッシュを再索引付けします。 |
28 | hash.reject { |key, value| block } ブロックが真と評価するすべてのペアに対して新しいハッシュを作成します。 |
29 | hash.reject! { |key, value| block } rejectと同じですが、変更はその場で行われます。 |
30 | hash.replace(other_hash)hashの内容をother_hashの内容に置き換えます。 |
31 | hash.select { |key, value| block } キーと値のペアからなる新しい配列を返しハッシュ対象のブロックが返さ真。 |
32 | hash.shiftハッシュからキーと値のペアを削除し、2要素の配列として返します。 |
33 | hash.sizeハッシュのサイズまたは長さを整数として返します。 |
34 | hash.sortハッシュをキーと値のペアの配列を含む2次元配列に変換し、配列としてソートします。 |
35 | hash.store(key、value)キーと値のペアをハッシュで格納します。 |
36 | hash.to_aハッシュから2次元配列を作成します。各キーと値のペアは配列に変換され、これらの配列はすべて、配列内に格納されます。 |
37 | hash.to_hashハッシュ(自己)を返します。 |
38 | hash.to_s変換ハッシュを配列に、その文字列にその配列を変換します。 |
39 | hash.update(other_hash) [or]
hash.update(other_hash) {|key, oldval, newval| block} 内容を含む新しいハッシュを返しますハッシュとother_hashを、でペアを上書きハッシュからのものとの重複キーでother_hashを。 |
40 | hash.value?(value)ハッシュが指定された値を含むかどうかをテストします。 |
41 | hash.valueshashのすべての値を含む新しい配列を返します。 |
42 | hash.values_at(obj、…)指定されたキーまたはキーに関連付けられたhashの値を含む新しい配列を返します。 |
前のページ
次のページ