Ruby ハッシュ(Hash)
ハッシュ(Hash)は "key" => "value" のようなキーと値のペアの集合です。ハッシュは配列に似ていますが、インデックスが数値に限定されない点が異なります。
Hash のインデックス(または「キー」)は、ほとんど任意のオブジェクトを使用できます。
Hash は配列に似ていますが、非常に重要な違いがあります。Hash の要素には特定の順序がないことです。順序が重要な場合は配列を使用する必要があります。
ハッシュの作成
配列と同様に、ハッシュを作成する方法はいくつかあります。newクラスメソッドを使用して空のハッシュを作成します:
months = Hash.new
次を使用することもできますnewデフォルト値を持つハッシュを作成します。デフォルト値を持たないハッシュはnil:
months = Hash.new( "month" )
或
months = Hash.new "month"
デフォルト値を持つハッシュの任意のキーにアクセスするとき、キーまたは値が存在しない場合、ハッシュへのアクセスはデフォルト値を返します:
上記のサンプルを実行した出力結果は次のとおりです:
month month
上記のサンプルを実行した出力結果は次のとおりです:
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 となるtrue各キーと値のペアを、hashhash から削除します。 |
| 10 | hash.each { |key,value| block } hash を反復処理し、hash各keyキーに対して block を1回呼び出し、key-value を2要素の配列として渡します。 |
| 11 | hash.each_key { |key| block } hash を反復処理し、hash各keyキーに対して block を1回呼び出し、keyキーをパラメータとして渡します。 |
| 12 | hash.each_key { |key_value_array| block } hash を反復処理し、hash各key値に対して block を1回呼び出し、keyとvalue値をパラメータとして渡します。 |
| 13 | hash.each_value { |value| block } hash を反復処理し、hash各keyキーと値のペアに対して block を1回呼び出し、valueキーと値をパラメータとして渡します。 |
| 14 | hash.empty? hash が空であるかどうか(キーと値のペアを含まないか)を確認し、true 或 false。 |
| 15 | hash.fetch(key [, default] ) [or] hash.fetch(key) { | key | block } 指定された key を使用してkeyからhash値を返します。key が見つからない場合、key、かつ他のパラメータが提供されていない場合は、IndexError例外をスローします。デフォルト値が指定されている場合は、defaultその値を返しますdefault。オプションの block が指定されている場合は、block の結果を返します。 |
| 16 | hash.has_key?(key) [or] hash.include?(key) [or] hash.key?(key) [or] hash.member?(key) 指定された key がkeyハッシュ内に存在するかどうかを確認し、true 或 false。 |
| 17 | hash.has_value?(value) ハッシュが指定された value を含むかどうかを確認します。value。 |
| 18 | hash.index(value) 指定された value に対してvalueハッシュ内のキーを返しますkey。一致する値が見つからない場合は nil を返します。nil。 |
| 19 | hash.indexes(keys) 指定されたキーの値で構成される新しい配列を返します。見つからないキーにはデフォルト値が挿入されます。このメソッドは非推奨です。select を使用してください。 |
| 20 | hash.indices(keys) 指定されたキーの値で構成される新しい配列を返します。見つからないキーにはデフォルト値が挿入されます。このメソッドは非推奨です。select を使用してください。 |
| 21 | hash.inspect ハッシュの印字可能な文字列表現を返します。 |
| 22 | hash.invert 新しいhashhash を作成し、hash内のkeysとvaluesを反転させます。つまり、新しいハッシュでは、hash内のキーが値になり、値がキーになります。 |
| 23 | hash.keys 新しい配列を作成し、hashhash 内のキーを持ちます。 |
| 24 | hash.length 整数として返しますhashhash のサイズまたは長さ。 |
| 25 | hash.merge(other_hash) [or] hash.merge(other_hash) { |key, oldval, newval| block } 新しいハッシュを返します。hashとother_hashhash と other_hash の内容を含み、hash 内でother_hashother_hash と重複するキーを持つキーと値のペアを上書きします。 |
| 26 | hash.merge!(other_hash) [or] hash.merge!(other_hash) { |key, oldval, newval| block } merge と同じですが、実際には hash が変更されます。 |
| 27 | hash.rehash 各keyキーの現在の値に基づいてhashhash を再構築します。挿入後に値が変更された場合、このメソッドは hash を再インデックスします。hash。 |
| 28 | hash.reject { |key, value| block } delete_if に似ていますが、ハッシュのコピーに対して作用します。hsh.dup.delete_if と同じです。 |
| 29 | hash.reject! { |key, value| block } delete_if と同じですが、変更がない場合は nil を返します。 |
| 30 | hash.replace(other_hash) をhashhash の内容をother_hashother_hash の内容に置き換えます。 |
| 31 | hash.select { |key, value| block } 新しい配列を返します。blockblock が true を返すtrueのhashキーと値のペアで構成されます。 |
| 32 | hash.shift からhashhash からキーと値のペアを1つ削除し、そのキーと値のペアを2要素の配列として返します。 |
| 33 | hash.size 整数として返しますhashのsizehash のサイズまたは length。 |
| 34 | hash.sort をhashキーと値のペアの配列を含む2次元配列に変換し、ソートします。 |
| 35 | hash.store(key, value) 保存しますhashhash 内のキーと値のペアを。 |
| 36 | hash.to_a hash から2次元配列を作成します。各キーと値のペアは配列に変換され、それらすべての配列が1つの配列に格納されます。 |
| 37 | hash.to_hash を返しますhash(self)。 |
| 38 | hash.to_s をhash配列に変換し、その配列を文字列に変換します。 |
| 39 | hash.update(other_hash) [or] hash.update(other_hash) {|key, oldval, newval| block} 新しいハッシュを返します。hashとother_hashhash の内容を含み、hashhash 内でother_hashother_hash と重複するキーを持つキーと値のペアを上書きします。 |
| 40 | hash.value?(value) 確認しますhash指定された value を含むかどうか。value。 |
| 41 | hash.values 新しい配列を返します。hashhash のすべての値を含みます。 |
| 42 | hash.values_at(obj, ...) 新しい配列を返します。hashhash 内の指定されたキーに関連する値を含みます。 |