Ruby-hashes

提供:Dev Guides
移動先:案内検索

Ruby-ハッシュ

ハッシュは、次のようなキーと値のペアのコレクションです: "employee" ⇒ "salary"。 整数インデックスではなく、オブジェクトタイプの任意のキーを介してインデックス付けが行われることを除いて、配列に似ています。

キーまたは値のいずれかでハッシュをトラバースする順序は任意のように見える場合があり、通常は挿入順序にはなりません。 存在しないキーでハッシュにアクセスしようとすると、メソッドは_nil_を返します。

ハッシュを作成する

配列と同様に、ハッシュを作成するさまざまな方法があります。 あなたは_new_クラスメソッドで空のハッシュを作成することができます-

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"]

以下は、パブリックハッシュメソッドです(_hash_が配列オブジェクトであると仮定)-

Sr.No. Methods & Description
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を返します。 (キーが_hash_に存在しない場合、[]はデフォルト値を返します。)

6

hash.default = obj

_hash_のデフォルト値を設定します。

7

hash.default_proc

_hash_がブロックによって作成された場合、ブロックを返します。

8

hash.delete(key) [or]

  • array.delete(key)\ {
key

ブロック}*

_key_で_hash_からキーと値のペアを削除します。 ブロックが使用されている場合、ペアが見つからない場合はブロックの結果を返します。 _delete_if_を比較します。

9 *hash.delete_if \{
key,value

block }*

ブロックが_true_と評価するすべてのペアについて、_hash_からキーと値のペアを削除します。

10 *hash.each \{
key,value

block }*

_hash_を反復処理し、キーごとにブロックを1回呼び出して、キー値を2要素配列として渡します。

11 *hash.each_key \{
key

block }*

_hash_を反復処理し、キーごとにブロックを呼び出して、_key_をパラメーターとして渡します。

12 *hash.each_key \{
key_value_array

block }*

_hash_を反復処理し、_key_ごとに1回ブロックを呼び出し、_key_と_value_をパラメーターとして渡します。

13 *hash.each_key \{
value

block }*

_hash_を反復処理し、_key_ごとに1回ブロックを呼び出し、_value_をパラメーターとして渡します。

14

hash.empty?

ハッシュが空(キーと値のペアを含まない)かどうかをテストし、_true_または_false_を返します。

15

hash.fetch(key [, default] ) [or]

  • hash.fetch(key)\ {
キー

ブロック}*

指定された_key_の_hash_から値を返します。 _key_が見つからず、他の引数がない場合、_IndexError_例外が発生します。 _default_が指定されている場合、それが返されます。オプションのブロックが指定されている場合、その結果が返されます。

16

hash.has_key?(key) [or] hash.include?(key) [or]

  • hash.key?(key)[または] hash.member?(key) *

特定の_key_がハッシュに存在するかどうかをテストし、_true_または_false_を返します。

17
  • hash.has_value?(value)*

ハッシュに指定の_value_が含まれているかどうかをテストします。

18

hash.index(value)

指定された_value_の_key_をハッシュで返し、一致する値が見つからない場合は_nil_を返します。

19

hash.indexes(keys)

指定されたキーの値で構成される新しい配列を返します。 見つからないキーのデフォルト値を挿入します。 このメソッドは非推奨です。 選択を使用します。

20

hash.indices(keys)

指定されたキーの値で構成される新しい配列を返します。 見つからないキーのデフォルト値を挿入します。 このメソッドは非推奨です。 選択を使用します。

21

hash.inspect

ハッシュのプリティプリント文字列バージョンを返します。

22

hash.invert

新しい_hash_を作成し、_hash_から_keys_と_values_を反転します。つまり、新しいハッシュでは、_hash_のキーが値になり、値がキーになります。

23

hash.keys

_hash_のキーを持つ新しい配列を作成します。

24

hash.length

_hash_のサイズまたは長さを整数として返します。

25

hash.merge(other_hash) [or]

  • hash.merge(other_hash)\ {
key、oldval、newval

ブロック}*

_hash_および_other_hash_の内容を含む新しいハッシュを返します。ハッシュ内のペアを、_other_hash_のキーで重複キーで上書きします。

26

hash.merge!(other_hash) [or]

  • hash.merge!(other_hash)\ {
key、oldval、newval

ブロック}*

マージと同じですが、変更はその場で行われます。

27

hash.rehash

各_key_の現在の値に基づいて_hash_を再構築します。 値が挿入されてから値が変更されている場合、このメソッドは_hash_のインデックスを再作成します。

28 *hash.reject \{
key, value

block }*

_block_が_true_と評価するペアごとに新しい_hash_を作成します

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

_size_または_hash_の長さを整数として返します。

34

hash.sort

_hash_をキーと値のペアの配列を含む2次元配列に変換してから、配列としてソートします。

35

hash.store(key, value)

_hash_にキーと値のペアを格納します。

36

hash.to_a

ハッシュから2次元配列を作成します。 各キー/値ペアは配列に変換され、これらの配列はすべて包含配列に格納されます。

37

hash.to_hash

hash(自己)を返します。

38

hash.to_s

_hash_を配列に変換してから、その配列を文字列に変換します。

39

hash.update(other_hash) [or]

  • hash.update(other_hash)\ {
key、oldval、newval

ブロック} *

_hash_と_other_hash_の内容を含む新しいハッシュを返し、_hash_のペアを_other_hash_のキーで重複キーで上書きします。

40
  • hash.value?(value)*

_hash_に指定された_value_が含まれているかどうかをテストします。

41

hash.values

_hash_のすべての値を含む新しい配列を返します。

42

hash.values_at(obj, …​)

指定されたキーに関連付けられている_hash_の値を含む新しい配列を返します。