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[[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"]
以下はパブリックハッシュメソッドです(ハッシュが配列オブジェクトであると仮定)-
シニア番号 | 方法と説明 |
---|---|
1 | hash == other_hash キーと値のペアの数が同じかどうか、およびキーと値のペアが各ハッシュの対応するペアと一致するかどうかに基づいて、2つのハッシュが等しいかどうかをテストします。 |
2 | hash.[key] キーを使用して、ハッシュから値を参照します。キーが見つからない場合は、デフォルト値を返します。 |
3 | hash.[key] = value valueで指定された値をkeyで指定されたキーに関連付けます。 |
4 | hash.clear すべてのキーと値のペアをハッシュから削除します。 |
5 | hash.default(key = nil) hashのデフォルト値を返します。default=で設定されていない場合はnilを返します。([]は、キーがハッシュに存在しない場合、デフォルト値を返します。) |
6 | hash.default = obj hashのデフォルト値を設定します。 |
7 | hash.default_proc ハッシュがブロックによって作成された場合、ブロックを返します。 |
8 | hash.delete(key) [or] array.delete(key) { |key| block } キーごとのハッシュからキーと値のペアを削除します。ブロックが使用されている場合、ペアが見つからない場合はブロックの結果を返します。delete_ifを比較します。 |
9 | hash.delete_if { |key,value| block } ブロックがtrueと評価するすべてのペアのハッシュからキーと値のペアを削除します。 |
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回ブロックを呼び出し、値をパラメーターとして渡します。 |
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 hashからのキーを使用して新しい配列を作成します。 |
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 } ブロックがtrueと評価するすべてのペアに対して新しいハッシュを作成します |
29 | hash.reject! { |key, value| block } 拒否と同じですが、変更が加えられます。 |
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.values hashのすべての値を含む新しい配列を返します。 |
42 | hash.values_at(obj, ...) 指定された1つまたは複数のキーに関連付けられているハッシュからの値を含む新しい配列を返します。 |