るりまサーチ

最速Rubyリファレンスマニュアル検索!
47件ヒット [1-47件を表示] (0.019秒)

別のキーワード

  1. _builtin freeze
  2. module freeze
  3. object freeze
  4. delegate freeze
  5. delegator freeze

クラス

キーワード

検索結果

Object#freeze -> self (18151.0)

オブジェクトを凍結(内容の変更を禁止)します。

... FrozenError を発生させます。
いったん凍結されたオブジェクトを元に戻す方法はありません。

凍結されるのはオブジェクトであり、変数ではありません。代入などで変数の指す
オブジェクトが変化してしまうことは freeze...
...ません。 freeze が防ぐのは、
`破壊的な操作' と呼ばれるもの一般です。変数への参照自体を凍結したい
場合は、グローバル変数なら Kernel.#trace_var が使えます。

@return self を返します。

//emlist[][ruby]{
a1 = "foo".freeze
a1 = "bar"
p a...
...a2 = "foo".freeze
a2.replace("bar") # can't modify frozen String (FrozenError)
//}

凍結を解除することはできませんが、Object#dup を使えばほぼ同じ内容の凍結されていない
オブジェクトを得ることはできます。

//emlist[][ruby]{
a = [1].freeze
p a.frozen...

Module#freeze -> self (18127.0)

モジュールを凍結(内容の変更を禁止)します。

...

凍結したモジュールにメソッドの追加など何らかの変更を加えようとした場合に
FrozenError

が発生します。

@see Object#freeze

//emlist[例][ruby]{
module Foo; end
Foo.freeze

module Foo
def foo; end
end # => FrozenError: can't modify frozen module
//}...

FrozenError#receiver -> object (9014.0)

self が発生した時のレシーバオブジェクトを返します。

...self が発生した時のレシーバオブジェクトを返します。

@raise ArgumentError レシーバが設定されていない時に発生します。

//emlist[][ruby]{
begin
[1, 2, 3].freeze << 4
rescue FrozenError => err
p err.receiver # => [1, 2, 3]
end
//}...

FrozenError (6030.0)

Object#freezeされたオブジェクトを変更しようとした時に発生します。

...Object#freezeされたオブジェクトを変更しようとした時に発生します。


//emlist[例][ruby]{
[1, 2, 3].freeze << 4 # FrozenError: can't modify frozen Array
//}...

Hash.new(ifnone = nil) -> Hash (20.0)

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

...るには、破壊的でないメソッドで再代入する必要が有ります。
また、このようなミスを防ぐためにもifnoneは freeze して破壊的操作を禁止しておくのが無難です。


@param ifnone キーに対応する値が存在しない時のデフォルト値...
...#=> ["bar"]
p h[1] #=> ["bar"]

p h[2] #=> ["bar"]
p h[2].object_id #=> 6127150

p h #=> {}


h = Hash.new([].freeze)
h[0] += [0] #破壊的でないメソッドはOK
h[1] << 1
# エラー: can't modify frozen Array (FrozenError)
//}...

絞り込み条件を変える

Hash (14.0)

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

...は、文字列をコピーし、コピーを更新不可に設定 (Object#freeze) してキーとして
使用します。この為、キーとして使われている文字列を更新しようとすると例外
FrozenError

が発生するので rehash を呼ぶ必要性は生じません。

...

Hash.new {|hash, key| ... } -> Hash (5.0)

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

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

値が設定されていないハッシュ要素を参照するとその都度ブロックを
実行し、その結果を返します。
ブロックにはそのハッシュとハッシュを参照したときのキーが渡されます。

@raise ArgumentError ブロックと通常引数を同時に与えると発生します。

//emlist[例][ruby]{
# ブロックではないデフォルト値は全部同一のオブジェクトなので、
# 破壊的変更によって他のキーに対応する値も変更されます。
h = Hash.new...