Ruby 2.1.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, ... } と同じ。キーがシンボルの場合の省略した書き方

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

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

ただし、 更新不可 (Object#frozen? が true) では無い文字列をキーとして与えた場合は、文字列をコピーし、コピーを更新不可に設定 (Object#freeze) してキーとして 使用します。この為、キーとして使われている文字列を更新しようとすると例外 RuntimeError が発生するので 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 -> bool
eql?(other) -> bool

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

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と同じ内容を持つ新しいハッシュを返します。

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 から削除します。

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, default = nil) {|key| ... } -> object

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

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 {|key, value| ... } -> self
select! {|key, value| ... } -> self | nil
keep_if -> Enumerator
select! -> Enumerator

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

keys -> [object]

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

length -> Integer
size -> Integer

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

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

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

rassoc(value) -> Array | nil

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

rehash -> self

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

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

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

replace(other) -> self

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

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

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

shift -> [object, object]

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

sort -> Array
sort {|a, b| ... } -> Array

ハッシュを [key, value] を要素とする配列の配列に変換して,それをソー トした配列を返します。

to_a -> [Array]

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

to_h -> self | Hash

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

to_hash -> self

self を返します。

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

selfとotherのハッシュの内容をマージ(統合)します。Hash#merge!と同じです。

values -> [object]

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

values_at(*keys) -> [object]

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

継承したメソッド

! != __id__ instance_eval instance_exec singleton_method_added singleton_method_removed singleton_method_undefined all? any? chunk 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 group_by inject lazy max max_by min min_by minmax minmax_by none? one? partition reverse_each slice_before sort_by take take_while to_set zip !~ <=> =~ __send__ _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? marshal_dump marshal_load method method_missing methods must_be must_be_close_to must_be_empty must_be_instance_of must_be_kind_of must_be_nil must_be_same_as must_be_within_epsilon must_equal must_include must_match must_raise must_respond_to must_send must_throw 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? singleton_class singleton_method singleton_methods taint tainted? tap to_ary to_int to_io to_proc to_regexp to_str trust untaint untrust untrusted? .yaml_tag ::ARGF ::ARGV ::DATA ::ENV ::FALSE ::NIL ::RUBY_COPYRIGHT ::RUBY_DESCRIPTION ::RUBY_ENGINE ::RUBY_PATCHLEVEL ::RUBY_PLATFORM ::RUBY_RELEASE_DATE ::RUBY_REVISION ::RUBY_VERSION ::SCRIPT_LINES__ ::STDERR ::STDIN ::STDOUT ::TOPLEVEL_BINDING ::TRUE