るりまサーチ

最速Rubyリファレンスマニュアル検索!
143件ヒット [1-100件を表示] (0.086秒)
トップページ > クエリ:_builtin[x] > クエリ:puts[x] > クエリ:initialize[x]

別のキーワード

  1. _builtin new
  2. _builtin inspect
  3. _builtin []
  4. _builtin to_s
  5. _builtin each

ライブラリ

モジュール

キーワード

検索結果

<< 1 2 > >>

Object#initialize(*args, &block) -> object (26161.0)

ユーザ定義クラスのオブジェクト初期化メソッド。

...トの動作ではなにもしません。

initialize
には
Class#new に与えられた引数がそのまま渡されます。

サブクラスではこのメソッドを必要に応じて再定義されること
が期待されています。

initialize
という名前のメソッドは自動...
...][ruby]{
class Foo
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
# #<Bar:0x2b68f08...

Object#initialize_copy(obj) -> object (14155.0)

(拡張ライブラリによる) ユーザ定義クラスのオブジェクトコピーの初期化メソッド。

...し、self のインスタンス変数や特異メソッドは変化しません。
Object#clone, Object#dupの内部で使われています。

initialize
_copy は、Ruby インタプリタが知り得ない情報をコピーするた
めに使用(定義)されます。例えば C 言語でクラ...
...clone
を再定義する必要がなくなります。

デフォルトの Object#initialize_copy は、 freeze チェックおよび型のチェックを行い self
を返すだけのメソッドです。

initialize
_copy という名前のメソッドは
自動的に private に設定されます...
...利用しているかを示します。

obj.dup は、新たに生成したオブジェクトに対して
initialize
_copy を呼び

//emlist[][ruby]{
obj2 = obj.class.allocate
obj2.initialize_copy(obj)
//}

obj2 に対してさらに obj の汚染状態、インスタンス変数、ファイナラ...
...利用しているかを示します。

obj.dup は、新たに生成したオブジェクトに対して
initialize
_copy を呼び

//emlist[][ruby]{
obj2 = obj.class.allocate
obj2.initialize_copy(obj)
//}

obj2 に対してさらに obj のインスタンス変数、ファイナライザを
...

ObjectSpace.#define_finalizer(obj) {|id| ...} -> Array (8042.0)

obj が解放されるときに実行されるファイナライザ proc を 登録します。同じオブジェクトについて複数回呼ばれたときは置き換えで はなく追加登録されます。固定値 0 と proc を配列にして返します。

...の注意

以下は、define_finalizer の使い方の悪い例です。

//emlist[悪い例][ruby]{
class Foo
def initialize
ObjectSpace.define_finalizer(self) {
puts
"foo"
}
end
end
Foo.new
GC.start
//}

これは、渡された proc の self が obj を参照しつ
づけるた...
...生成することで上記の問題を回避しています。

//emlist[例][ruby]{
class Bar
def Bar.callback
proc {
puts
"bar"
}
end
def initialize
ObjectSpace.define_finalizer(self, Bar.callback)
end
end
Bar.new
GC.start
//}

proc の呼び出しで発生した大域...
...しておいた方が良いでしょう。

//emlist[例][ruby]{
class Baz
def initialize
ObjectSpace.define_finalizer self, eval(%q{
proc {
raise "baz" rescue puts $!
raise "baz2"
puts
"baz3"
}
}, TOPLEVEL_BINDING)
end
end
Baz.new
GC.start

# => baz
/...

ObjectSpace.#define_finalizer(obj, proc) -> Array (8042.0)

obj が解放されるときに実行されるファイナライザ proc を 登録します。同じオブジェクトについて複数回呼ばれたときは置き換えで はなく追加登録されます。固定値 0 と proc を配列にして返します。

...の注意

以下は、define_finalizer の使い方の悪い例です。

//emlist[悪い例][ruby]{
class Foo
def initialize
ObjectSpace.define_finalizer(self) {
puts
"foo"
}
end
end
Foo.new
GC.start
//}

これは、渡された proc の self が obj を参照しつ
づけるた...
...生成することで上記の問題を回避しています。

//emlist[例][ruby]{
class Bar
def Bar.callback
proc {
puts
"bar"
}
end
def initialize
ObjectSpace.define_finalizer(self, Bar.callback)
end
end
Bar.new
GC.start
//}

proc の呼び出しで発生した大域...
...しておいた方が良いでしょう。

//emlist[例][ruby]{
class Baz
def initialize
ObjectSpace.define_finalizer self, eval(%q{
proc {
raise "baz" rescue puts $!
raise "baz2"
puts
"baz3"
}
}, TOPLEVEL_BINDING)
end
end
Baz.new
GC.start

# => baz
/...

BasicObject#! -> bool (8024.0)

オブジェクトを真偽値として評価し、その論理否定を返します。

...t[例][ruby]{
class NegationRecorder < BasicObject
def initialize
@count = 0
end
attr_reader :count

def !
@count += 1
super
end
end

recorder = NegationRecorder.new
!recorder
!!!!!!!recorder
puts
'hoge' if !recorder

puts
recorder.count #=> 3
//}

//emlist[例][ruby]{
class A...
...notherFalse < BasicObject
def !
true
end
end
another_false = AnotherFalse.new

# another_falseは*真*
puts
"another false is a truth" if another_false
#=> "another false is a truth"
//}...

絞り込み条件を変える

Thread::Backtrace::Location (8024.0)

Ruby のフレームを表すクラスです。

...b(skip)
end

c(0..2).map do |call|
puts
call.to_s
end
//}

例1の実行結果:

caller_locations.rb:2:in `a'
caller_locations.rb:5:in `b'
caller_locations.rb:8:in `c'

//emlist[例2][ruby]{
# foo.rb
class Foo
attr_accessor :locations
def initialize(skip)
@locations = caller_locat...
...ions(skip)
end
end

Foo.new(0..2).locations.map do |call|
puts
call.to_s
end
//}

例2の実行結果:

init.rb:4:in `initialize'
init.rb:8:in `new'
init.rb:8:in `<main>'

=== 参考

* Ruby VM アドベントカレンダー #4 vm_backtrace.c: https://www.atdot.net/~ko1/diary/201212.html#...

Object#to_s -> String (8018.0)

オブジェクトの文字列表現を返します。

...使って文字列に変換し
ます。

//emlist[][ruby]{
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...

Thread::Backtrace::Location#base_label -> String (8018.0)

self が表すフレームの基本ラベルを返します。通常、 Thread::Backtrace::Location#label から修飾を取り除いたもので構成 されます。

...されます。

//emlist[例][ruby]{
# foo.rb
class Foo
attr_accessor :locations
def initialize(skip)
@locations = caller_locations(skip)
end
end

Foo.new(0..2).locations.map do |call|
puts
call.base_label
end

# => initialize
# new
# <main>
//}

@see Thread::Backtrace::Location#label...

Thread::Backtrace::Location#inspect -> String (8018.0)

Thread::Backtrace::Location#to_s の結果を人間が読みやすいような文 字列に変換したオブジェクトを返します。

...st[例][ruby]{
# foo.rb
class Foo
attr_accessor :locations
def initialize(skip)
@locations = caller_locations(skip)
end
end

Foo.new(0..2).locations.map do |call|
puts
call.inspect
end

# => "path/to/foo.rb:5:in `initialize'"
# "path/to/foo.rb:9:in `new'"
# "path/to/foo.rb:9:in `<main>'"...

Thread::Backtrace::Location#to_s -> String (8018.0)

self が表すフレームを Kernel.#caller と同じ表現にした文字列を返し ます。

...mlist[例][ruby]{
# foo.rb
class Foo
attr_accessor :locations
def initialize(skip)
@locations = caller_locations(skip)
end
end

Foo.new(0..2).locations.map do |call|
puts
call.to_s
end

# => path/to/foo.rb:5:in `initialize'
# path/to/foo.rb:9:in `new'
# path/to/foo.rb:9:in `<main>'
//}...

絞り込み条件を変える

<< 1 2 > >>