English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby ハッシュ(Hash)

ハッシュ(Hash)は「key」=>「value」といったキー値ペアの集合です。ハッシュは配列に似ていますが、インデックスは数字に限定されません。

ハッシュのインデックス(または「キー」と呼ばれる)はほぼどんなオブジェクトでもできます。

Hash は配列と似ていますが、非常に重要な違いがあります:Hash の要素には特定の順序がありません。順序が重要な場合には、配列を使用する必要があります。

ハッシュを作成します

配列と同様に、ハッシュを作成する方法はさまざまです。以下のようにして、 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 オブジェクトです):

番号メソッド & 説明
1hash == other_hash
ハッシュが同じキー値ペアの数を持っているかどうか、キー値ペアが一致しているかどうかを確認して、ハッシュが等しいかどうかを判断します。
2hash[key]
キーを使用して、ハッシュから値を参照します。キーが見つからない場合は、デフォルト値が返されます。
3hash[key]=value
キーと key キーに関連付けます。
4hash.clear
从哈希中移除所有的键值对。
5からすべてのキー値ペアをハッシュから削除します。
返します ハッシュ hash.default(key = nil) ハッシュ のデフォルト値が設定されていない場合、nilを返します。(キーが
6に存在しない場合、[]はデフォルト値を返します。)
hash.default = obj ハッシュ
7デフォルト値を設定します。
hash.default_proc ハッシュ ブロックを使用して作成されている場合、ブロックを返します。
8hash.delete(key) [または]
array.delete(key) { |key| block }

を使用して key から ハッシュ からキー値ペアを削除します。ブロックを使用して検索し、一致するキー値ペアが見つからない場合、ブロックの結果を返します。それを delete_if と比較します。
9hash.delete_if { |key,value| block }
ブロックが true 各ブロック、 ハッシュ からキー値ペアを削除します。
10hash.each { |key,value| block }
を巡回 ハッシュkey ブロックを一度呼び出し、keyを渡します-valueを二要素の配列として
11hash.each_key { |key| block }
を巡回 ハッシュkey ブロックを一度呼び出し、 key をパラメータとして
12hash.each_key { |key_value_array| block }
を巡回 ハッシュkey ブロックを一度呼び出し、 key をパラメータとして
13hash.each_value { |value| block }
を巡回 ハッシュkey ブロックを一度呼び出し、 をパラメータとして
14hash.empty?
ハッシュが空であるか確認します(キー値ペアを含まない場合)、返します true または false
15hash.fetch(key [, default] ) [または]
hash.fetch(key) { | key | block }

指定された key から ハッシュ 返値。もしその値が見つからない場合、 keyが発生し、他のパラメータが提供されていない場合、 IndexError 例外が発生します;デフォルト値が提供されていない場合、 defaultが指定されている場合、 defaultオプションのブロックが指定されている場合、ブロックの結果を返します。
16hash.has_key?(key) [または] hash.include?(key) [または]
hash.key?(key) [または] hash.member?(key)

指定された key ハッシュに存在するか確認し、返します true または false
17hash.has_value?(value)
ハッシュが指定された値を含んでいるか確認します
18hash.index(value)
指定された ハッシュの key、もしその値が見つからない場合は返します nil
19hash.indexes(keys)
は、指定されたキーの値を構成する新しい配列を返します。見つからないキーはデフォルト値に挿入されます。このメソッドは廃止されました。select を使用してください。
20hash.indices(keys)
は、指定されたキーの値を構成する新しい配列を返します。見つからないキーはデフォルト値に挿入されます。このメソッドは廃止されました。select を使用してください。
21hash.inspect
は、ハッシュの印刷可能な文字列バージョンを返します。
22hash.invert
新しい ハッシュを逆転します。 ハッシュkeysvaluesこれは、新しいハッシュでは、ハッシュ のキーが値になり、値がキーになるようにします。
23hash.keys
新しい配列を作成します。それは ハッシュ のキーにします。
24hash.length
整数形式で返します。 ハッシュ のサイズまたは長さにします。
25hash.merge(other_hash) [または]
hash.merge(other_hash) { |key, oldval, newval| block }

新しいハッシュを返し、 ハッシュother_hash の内容を、ハッシュの中で other_hash 重複キーのキー値ペアを持つ。
26hash.merge!(other_hash) [または]
hash.merge!(other_hash) { |key, oldval, newval| block }

merge と同じですが、実際にはハッシュが変更されます。
27hash.rehash
key の現在の値に基づいて再構築します。 ハッシュ。値が変更された場合、このメソッドは再インデックスを ハッシュ
28hash.reject { |key, value| block }
delete_if に似ていますが、コピーのハッシュ上で作用します。hsh.dup.delete_if に等しいです。
29hash.reject! { |key, value| block }
に等しいが、変更がない場合には nil を返します。
30hash.replace(other_hash)
ハッシュ の内容を other_hash の内容です。
31hash.select { |key, value| block }
新しい配列を返します。それは block 返します trueハッシュ のキー値ペアで構成されています。
32hash.shift
から ハッシュ から1つのキー値ペアを取り除き、そのキー値ペアを2要素の配列として返します。
33hash.size
整数形式で返します。 ハッシュsize または length。
34hash.sort
ハッシュ キー値ペアを含む2次元配列に変換し、その後ソートします。
35hash.store(key, value)
保存 ハッシュ の1つのキー値ペア。
36hash.to_a
ハッシュから2次元配列を作成します。各キー値ペアは配列に変換され、それらの配列は配列に格納されます。
37ハッシュ.to_hash
返します ハッシュ(self)
38ハッシュ.to_s
ハッシュ 配列に変換し、その配列を文字列に変換します。
39ハッシュ.update(other_hash) [または]
ハッシュ.update(other_hash) {|キー、旧値、新値| ブロック}

新しいハッシュを返し、 ハッシュother_hash の内容を、 ハッシュ 中の other_hash 重複キーのキー値ペアを持つ。
40ハッシュ.value?(値)
チェック ハッシュ 指定された値を含むかどうか
41ハッシュ.values
新しい配列を返し、 ハッシュ のすべての値を含む。
42ハッシュ.values_at(obj, ...)
新しい配列を返し、 ハッシュ 指定されたキーに関連付けられた値。