Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Hashクラス

class Hash

クラス・モジュールの継承リスト: Hash < Enumerable < Object < Kernel < BasicObject
dynamic include: JSON::Generator::GeneratorMethods::Hash (by json)

要約

ハッシュテーブル(連想配列とも呼ぶ)のクラスです。ハッシュは任意の種類のオブジェクト(キー)から任意の種類のオブジェクト(値)への関連づけを行うことができます。

ハッシュ生成は多くの場合以下のようなリテラル (リテラル/ハッシュ式) で行われます。

{a => b, ... }   # aはキー、bは値となる
{s: b , ... }    # { :s => b, ... } と同じ。キーがシンボルの場合の省略した書き方
{"a+": b , ... } # { :"a+" => b, ... } と同じ。上の表現に空白や記号を含めたい場合

キーには任意の種類のオブジェクトを用いることができますが、以下の2つのメソッドが適切に定義してある必要があります。

破壊的操作によってキーとして与えたオブジェクトの内容が変化し、Object#hash の返す値が変わるとハッシュから値が取り出せなくなりますから、 ArrayHash などのインスタンスはキーに向きません。Hash#rehash を参照。

ただし、 更新不可 (Object#frozen? が true) では無い文字列をキーとして与えた場合は、文字列をコピーし、コピーを更新不可に設定 (Object#freeze) してキーとして使用します。この為、キーとして使われている文字列を更新しようとすると例外 FrozenError が発生するので rehash を呼ぶ必要性は生じません。

ハッシュにはデフォルト値を設定することができます。存在しないキーを探索したときに返す値で、未設定時は nil です。デフォルト値には値形式とブロック形式があります。実際にデフォルト値がどのように扱われるかは各メソッドの説明を参照してください。

ハッシュに含まれる要素の順序が保持されるようになりました。ハッシュにキーが追加された順序で列挙します。

特異メソッド

定義 説明
self[other] -> Hash

新しいハッシュを生成します。引数otherと同一のキーと値を持つ新たなハッシュを生成して返します。

self[*key_and_value] -> Hash

新しいハッシュを生成します。引数は必ず偶数個指定しなければなりません。奇数番目がキー、偶数番目が値になります。

new(ifnone = nil) -> Hash

空の新しいハッシュを生成します。ifnone はキーに対応する値が存在しない時のデフォルト値です。設定したデフォルト値はHash#defaultで参照できます。

new {|hash, key| ... } -> Hash

空の新しいハッシュを生成します。ブロックの評価結果がデフォルト値になります。設定したデフォルト値はHash#default_procで参照できます。

try_convert(obj) -> Hash | nil

to_hash メソッドを用いて obj をハッシュに変換しようとします。

インスタンスメソッド

定義 説明
self < other -> bool

self が other のサブセットである場合に真を返します。

self <= other -> bool

self が other のサブセットか同じである場合に真を返します。

self == other -> bool
self === other -> bool
eql?(other) -> bool

自身と other が同じ数のキーを保持し、キーが eql? メソッドで比較して全て等しく、値が == メソッドで比較して全て等しい場合に真を返します。

self > other -> bool

other が self のサブセットである場合に真を返します。

self >= other -> bool

other が self のサブセットか同じである場合に真を返します。

self[key] -> object | nil

key に関連づけられた値を返します。

self[key] = value
store(key, value) -> object

key に対して value を関連づけます。value を返します。

assoc(key) -> Array | nil

ハッシュが key をキーとして持つとき、見つかった要素のキーと値のペアを配列として返します。

clear -> self

ハッシュの中身を空にします。

clone -> Hash
dup -> Hash

selfと同じ内容を持つ新しいハッシュを返します。

compact -> Hash
compact! -> self | nil

compact は自身から value が nil のもの取り除いた Hash を生成して返します。 compact! は自身から破壊的に value が nil のものを取り除き、変更が行われた場合は self を、そうでなければ nil を返します。

compare_by_identity -> self

ハッシュのキーの一致判定をオブジェクトの同一性で判定するように変更します。

compare_by_identity? -> bool

ハッシュがキーの一致判定をオブジェクトの同一性を用いて行っているならば真を返します。

default -> object | nil
default(key) -> object | nil

ハッシュのデフォルト値を返します。

default=(value)

ハッシュのデフォルト値を value に変更します。対応する値が存在しないキーで検索した時にはこの値を返すようになります。

default_proc -> Proc | nil

ハッシュのデフォルト値を返す Proc オブジェクトを返します。ハッシュがブロック形式のデフォルト値を持たない場合 nil を返します。

default_proc=(pr)

ハッシュのデフォルト値を返す Proc オブジェクトを変更します。

delete(key) -> object | nil
delete(key) {|key| ... } -> object

key に対応する要素を取り除きます。

delete_if -> Enumerator
reject! -> Enumerator
delete_if {|key, value| ... } -> self
reject! {|key, value| ... } -> self|nil

キーと値を引数としてブロックを評価した結果が真であるような要素を self から削除します。

dig(key, ...) -> object | nil

self 以下のネストしたオブジェクトを dig メソッドで再帰的に参照して返します。途中のオブジェクトが nil であった場合は nil を返します。

each {|key, value| ... } -> self
each_pair {|key, value| ... } -> self
each -> Enumerator
each_pair -> Enumerator

ハッシュのキーと値を引数としてブロックを評価します。

each_key {|key| ... } -> self
each_key -> Enumerator

ハッシュのキーを引数としてブロックを評価します。

each_value {|value| ... } -> self
each_value -> Enumerator

ハッシュの値を引数としてブロックを評価します。

empty? -> bool

ハッシュが空の時、真を返します。

equal?(other) -> bool

指定された other が self 自身である場合のみ真を返します。

fetch(key) -> object
fetch(key, default) -> object
fetch(key) {|key| ... } -> object

key に関連づけられた値を返します。該当するキーが登録されていない時には、引数 default が与えられていればその値を、ブロックが与えられていればそのブロックを評価した値を返します。

fetch_values(key, ...) -> [object]
fetch_values(key, ...) { |key| ... } -> [object]

引数で指定されたキーに関連づけられた値の配列を返します。

flatten(level = 1) -> Array

自身を平坦化した配列を生成して返します。

has_key?(key) -> bool
include?(key) -> bool
key?(key) -> bool
member?(key) -> bool

ハッシュが key をキーとして持つ時真を返します。

has_value?(value) -> bool
value?(value) -> bool

ハッシュが value を値として持つ時真を返します。値の一致判定は == で行われます。

hash -> Integer

自身が保持するキーと値のハッシュ値を元にして算出した整数を返します。自身が保持するキーや値が変化すればこのメソッドが返す値も変化します。

key(val) -> object
index(val) -> object

値 val に対応するキーを返します。対応する要素が存在しない時には nil を返します。

to_s -> String
inspect -> String

ハッシュの内容を人間に読みやすい文字列にして返します。

invert -> Hash

値からキーへのハッシュを作成して返します。

keep_if -> Enumerator
keep_if {|key, value| ... } -> self
select! -> Enumerator
select! {|key, value| ... } -> self | nil

キーと値を引数としてブロックを評価した結果が真であるような要素を self に残します。

keys -> [object]

全キーの配列を返します。

length -> Integer
size -> Integer

ハッシュの要素の数を返します。

merge(other) -> Hash
merge(other) {|key, self_val, other_val| ... } -> Hash

selfとotherのハッシュの内容をマージ(統合)した結果を返します。デフォルト値はselfの設定のままです。

merge!(other) -> self
merge!(other) {|key, self_val, other_val| ... } -> self
update(other) -> self
update(other) {|key, self_val, other_val| ... } -> self

selfとotherのハッシュの内容をマージ(統合)します。

rassoc(value) -> Array | nil

ハッシュ内を検索して,引数 value と 一致する値を探します。

rehash -> self

キーのハッシュ値を再計算します。

reject {|key, value| ... } -> Hash
reject -> Enumerator

self を複製して、ブロックを評価した値が真になる要素を削除したハッシュを返します。

replace(other) -> self

ハッシュの内容を other の内容で置き換えます。

select -> Enumerator
select {|key, value| ... } -> Hash

key, value のペアについてブロックを評価し,真となるペアだけを含むハッシュを生成して返します。

shift -> [object, object] | nil

ハッシュからキーが追加された順で先頭の要素をひとつ取り除き、 [key, value]という配列として返します。

slice(*keys) -> Hash

引数で指定されたキーとその値だけを含む Hash を返します。

to_a -> [Array]

キーと値からなる 2 要素の配列を並べた配列を生成して返します。

to_h -> self | Hash

self を返します。Hash クラスのサブクラスから呼び出した場合は self を Hash オブジェクトに変換します。

to_hash -> self

self を返します。

to_proc -> Proc

self のキーに対応する値を返す Proc オブジェクトを返します。

transform_keys {|key| ... } -> Hash
transform_keys -> Enumerator

すべてのキーに対してブロックを呼び出した結果で置き換えたハッシュを返します。値は変化しません。

transform_keys! {|key| ... } -> self
transform_keys! -> Enumerator

すべてのキーに対してブロックを呼び出した結果でハッシュのキーを変更します。値は変化しません。

transform_values {|value| ... } -> Hash
transform_values -> Enumerator

すべての値に対してブロックを呼び出した結果で置き換えたハッシュを返します。キーは変化しません。

transform_values! {|value| ... } -> self
transform_values! -> Enumerator

すべての値に対してブロックを呼び出した結果でハッシュの値を変更します。キーは変化しません。

values -> [object]

ハッシュの全値の配列を返します。

values_at(*keys) -> [object]

引数で指定されたキーに対応する値の配列を返します。

継承したメソッド

! != __id__ __send__ instance_eval instance_exec method_missing singleton_method_added singleton_method_removed singleton_method_undefined all? any? chunk chunk_while collect collect_concat count cycle detect drop drop_while each_cons each_entry each_slice each_with_index each_with_object entries find_all find_index first grep grep_v group_by inject lazy max max_by min min_by minmax minmax_by none? one? partition reverse_each slice_after slice_before slice_when sort sort_by sum take take_while to_set uniq zip !~ <=> =~ _dump class define_singleton_method display enum_for extend freeze frozen? initialize initialize_copy instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? itself marshal_dump marshal_load method methods nil? object_id pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods psych_to_yaml public_method public_methods public_send remove_instance_variable respond_to? respond_to_missing? send singleton_class singleton_method singleton_methods taint tainted? tap to_ary to_int to_io to_regexp to_str trust untaint untrust untrusted? yield_self .yaml_tag ::ARGF ::ARGV ::DATA ::ENV ::FALSE ::NIL ::RUBY_COPYRIGHT ::RUBY_DESCRIPTION ::RUBY_ENGINE ::RUBY_ENGINE_VERSION ::RUBY_PATCHLEVEL ::RUBY_PLATFORM ::RUBY_RELEASE_DATE ::RUBY_REVISION ::RUBY_VERSION ::SCRIPT_LINES__ ::STDERR ::STDIN ::STDOUT ::TOPLEVEL_BINDING ::TRUE