ライブラリ
- ビルトイン (39)
キーワード
-
_ dump (3) - clone (3)
- dup (3)
-
initialize
_ copy (3) -
instance
_ eval (6) -
instance
_ exec (3) -
instance
_ variable _ defined? (3) -
instance
_ variable _ get (3) -
marshal
_ dump (3) -
method
_ missing (3) -
to
_ s (3)
検索結果
先頭5件
-
Object
# initialize(*args , &block) -> object (18150) -
ユーザ定義クラスのオブジェクト初期化メソッド。
...トの動作ではなにもしません。
initialize には
Class#new に与えられた引数がそのまま渡されます。
サブクラスではこのメソッドを必要に応じて再定義されること
が期待されています。
initialize という名前のメソッドは自動......def initialize name
puts "initialize Foo"
@name = name
end
end
class Bar < Foo
def initialize name, pass
puts "initialize Bar"
super name
@pass = pass
end
end
it = Bar.new('myname','0500')
p it
#=> initialize Bar
# initialize Foo... -
Object
# initialize _ copy(obj) -> object (6144) -
(拡張ライブラリによる) ユーザ定義クラスのオブジェクトコピーの初期化メソッド。
...で置き換えます。ただ
し、self のインスタンス変数や特異メソッドは変化しません。
Object#clone, Object#dupの内部で使われています。
initialize_copy は、Ruby インタプリタが知り得ない情報をコピーするた
めに使用(定義)されます...... initialize_copy でコピーするよう定義しておくことで、dup や clone
を再定義する必要がなくなります。
デフォルトの Object#initialize_copy は、 freeze チェックおよび型のチェックを行い self
を返すだけのメソッドです。
initialize_co......@see Object#clone,Object#dup
以下に例として、dup や clone がこのメソッドをどのように利用しているかを示します。
obj.dup は、新たに生成したオブジェクトに対して
initialize_copy を呼び
obj2 = obj.class.allocate
obj2.initialize_copy(obj... -
Object
# _ dump(limit) -> String (7) -
Marshal.#dump において出力するオブジェクトがメソッド _dump を定義している場合には、そのメソッドの結果が書き出されます。
...ド _dump
を定義している場合には、そのメソッドの結果が書き出されます。
バージョン1.8.0以降ではObject#marshal_dump, Object#marshal_loadの使用
が推奨されます。 Marshal.dump するオブジェクトが _dump と marshal_dump の両方の
メソッド......ルを表す整数です。
@return オブジェクトを文字列化したものを返すように定義すべきです。
class Foo
def initialize(arg)
@foo = arg
end
def _dump(limit)
Marshal.dump(@foo, limit)
end
def self._load(obj)
p obj
Foo.new(Mar......御を行いたい場合や拡張ライブラリで定義し
たクラスのインスタンスがインスタンス変数以外に情報を保持する場合に
利用します。(例えば、クラス Time は、_dump/_load を定義して
います)
@see Object#marshal_dump,Object#marshal_load... -
Object
# clone -> object (7) -
オブジェクトの複製を作成して返します。
...#=> true
p(obj_d.tainted?) #=> true
p(obj_d.frozen?) #=> false
p(obj_d.respond_to?(:fuga)) #=> false
@see Object#initialize_copy
==== 深いコピーと浅いコピー
clone や dup はオブジェクト自身を複製するだけで、オブジェクトの指... -
Object
# dup -> object (7) -
オブジェクトの複製を作成して返します。
...#=> true
p(obj_d.tainted?) #=> true
p(obj_d.frozen?) #=> false
p(obj_d.respond_to?(:fuga)) #=> false
@see Object#initialize_copy
==== 深いコピーと浅いコピー
clone や dup はオブジェクト自身を複製するだけで、オブジェクトの指... -
Object
# instance _ eval {|obj| . . . } -> object (7) -
オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを 評価してその結果を返します。
...実行されます。
スタックトレースの表示などを差し替えることができます。
例:
class Foo
def initialize data
@key = data
end
private
def do_fuga
p 'secret'
end
end
some = Foo.new 'XXX'
some.instance_eval{p @key} #... -
Object
# instance _ eval(expr , filename = "(eval)" , lineno = 1) -> object (7) -
オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを 評価してその結果を返します。
...実行されます。
スタックトレースの表示などを差し替えることができます。
例:
class Foo
def initialize data
@key = data
end
private
def do_fuga
p 'secret'
end
end
some = Foo.new 'XXX'
some.instance_eval{p @key} #... -
Object
# instance _ exec(*args) {|*vars| . . . } -> object (7) -
与えられたブロックをレシーバのコンテキストで実行します。
...メータに渡す値です。
class KlassWithSecret
def initialize
@secret = 99
end
end
k = KlassWithSecret.new
# 以下で x には 5 が渡される
k.instance_exec(5) {|x| @secret + x } #=> 104
@see Module#class_exec, Module#module_exec, Object#instance_eval... -
Object
# instance _ variable _ defined?(var) -> bool (7) -
インスタンス変数 var が定義されていたら真を返します。
...def initialize(p1, p2)
@a, @b = p1, p2
end
end
fred = Fred.new('cat', 99)
p fred.instance_variable_defined?(:@a) #=> true
p fred.instance_variable_defined?("@b") #=> true
p fred.instance_variable_defined?("@c") #=> false
@see Object#instance_variable_get,Object#in......stance_variable_set,Object#instance_variables... -
Object
# instance _ variable _ get(var) -> object|nil (7) -
オブジェクトのインスタンス変数の値を取得して返します。
...def initialize
@foo = 1
end
end
obj = Foo.new
p obj.instance_variable_get("@foo") #=> 1
p obj.instance_variable_get(:@foo) #=> 1
p obj.instance_variable_get(:@bar) #=> nil
@see Object#instance_variable_set,Object#instance_variables,Object#instan... -
Object
# marshal _ dump -> object (7) -
Marshal.#dump を制御するメソッドです。
...marshal_load を使うべきです。
@return 任意のオブジェクトで marshal_load の引数に利用できます。
class Foo
def initialize(arg)
@foo = arg
end
def marshal_dump
@foo
end
def marshal_load(obj)
p obj
@foo = obj
end
end
fo......定義されていてもマーシャルできるようになります
(特異メソッドの情報が自動的に dump されるようになるわけではなく、
marshal_dump/marshal_load によりそれを実現する余地があるということです)。
@see Object#marshal_load, Marshal... -
Object
# method _ missing(name , *args) -> object (7) -
呼びだされたメソッドが定義されていなかった時、Rubyインタプリタがこのメソッド を呼び出します。
...義の method_missing メソッドの返り値が未定義メソッドの返り値で
あるかのように見えます。
class Foo
def initialize(data)
@data = data
end
def method_missing(name, lang)
if name.to_s =~ /\Afind_(\d+)_in\z/
if @data[lang]... -
Object
# to _ s -> String (7) -
オブジェクトの文字列表現を返します。
...て文字列に変換し
ます。
class Foo
def initialize num
@num = num
end
end
it = Foo.new(40)
puts it #=> #<Foo:0x2b69110>
class Foo
def to_s
"Class:Foo Number:#{@num}"
end
end
puts it #=> Class:Foo Number:40
@see Object#to_str,Kernel.#String...
