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

class Hash

クラスの継承リスト: Hash < Enumerable < Object < Kernel

要約

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

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

{a => b, ... }   # aはキー、bは値となる

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

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

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

インスタンスメソッド

定義 説明
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 を返し ます。

clear -> self

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

clone -> Hash
dup -> Hash

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

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

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

default=(value)

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

default_proc -> Proc | nil

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

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

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

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

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

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

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

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

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

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

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

empty? -> bool

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

equal?(other) -> bool

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

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

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

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

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

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

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

hash -> Integer

自身の Object#object_id を返します。これは Object クラスで定義されたデフォルトの動作です。 メソッド hash の返り値は自身が保持するキーや値に影響されません。

index(val) -> object

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

indexes(*keys) -> [object]
indices(*keys) -> [object]

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

to_s -> String
inspect -> String

ハッシュの内容を inspect によって文字列化して返します。

invert -> Hash

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

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の設定のままです。

rehash -> self

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

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

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

replace(other) -> self

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

select -> Enumerable::Enumerator
select {|key, value| ... } -> Array

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

shift -> [object, object]

ハッシュから要素をひとつ取り除き、[key, value]という配列とし て返します。shiftがどの要素を返すかは不定です。

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

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

to_a -> [Array]

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

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]

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

継承したメソッド

all? any? collect count cycle detect drop drop_while each_cons each_slice each_with_index entries find_all find_index first grep group_by inject max max_by min min_by minmax minmax_by none? one? partition reverse_each sort_by take take_while to_set zip =~ __id__ __send__ _dump class dclone display enum_for extend freeze frozen? initialize initialize_copy instance_eval instance_exec instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? marshal_dump marshal_load method method_missing methods nil? pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods public_methods remove_instance_variable respond_to? singleton_method_added singleton_method_removed singleton_method_undefined singleton_methods taint tainted? tap to_ary to_int to_io to_proc to_regexp to_str to_yaml to_yaml_properties to_yaml_style untaint