るりまサーチ

最速Rubyリファレンスマニュアル検索!
538件ヒット [1-100件を表示] (0.085秒)
トップページ > クエリ:end[x] > クエリ:initialize[x] > ライブラリ:ビルトイン[x]

別のキーワード

  1. _builtin end
  2. ripper end_seen?
  3. _builtin exclude_end?
  4. _builtin end_with?
  5. matchdata end

クラス

モジュール

キーワード

検索結果

<< 1 2 3 ... > >>

Object#initialize(*args, &block) -> object (18175.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 (6193.0)

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

...ソッドは変化しません。

デフォルトでは、Object#clone の内部で Object#initialize_clone から、
また Object#dup の内部で Object#initialize_dup から呼ばれます。

initialize
_copy は、Ruby インタプリタが知り得ない情報をコピーするた
めに使...
... initialize_copy でコピーするよう定義しておくことで、dup や clone
を再定義する必要がなくなります。

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

initialize
_cop...
...利用しているかを示します。

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 のインスタンス変数、ファイナライザを
...

Data.[](**kwargs) -> Data (80.0)

(このメソッドは Data のサブクラスにのみ定義されています) 値オブジェクトを生成して返します。

...す。

new に渡す引数の数がメンバの数より少ない場合は new ではエラーにならず、そのまま initialize に渡されます。
ユーザが initialize のオーバーライドを通して、少ない引数のときの適切な振舞いを実装可能とするためです...
...
残りのケースではエラーの発生箇所は new ではなく initialize であることに注意してください。

//emlist[例][ruby]{
Point = Data.define(:x, :y)

Point.new(1) # => in `initialize': missing keyword: :y (ArgumentError)
Point.new(1, 2, 3) # =...
...ed 0..2) (ArgumentError)
Point.new(x: 1) # => in `initialize': missing keyword: :y (ArgumentError)
Point.new(x: 1, y: 2, z: 3) # => in `initialize': unknown keyword: :z (ArgumentError)
//}

下の例のように、initialize メソッドをオーバーライドすることで new の...

Data.[](*args) -> Data (80.0)

(このメソッドは Data のサブクラスにのみ定義されています) 値オブジェクトを生成して返します。

...す。

new に渡す引数の数がメンバの数より少ない場合は new ではエラーにならず、そのまま initialize に渡されます。
ユーザが initialize のオーバーライドを通して、少ない引数のときの適切な振舞いを実装可能とするためです...
...
残りのケースではエラーの発生箇所は new ではなく initialize であることに注意してください。

//emlist[例][ruby]{
Point = Data.define(:x, :y)

Point.new(1) # => in `initialize': missing keyword: :y (ArgumentError)
Point.new(1, 2, 3) # =...
...ed 0..2) (ArgumentError)
Point.new(x: 1) # => in `initialize': missing keyword: :y (ArgumentError)
Point.new(x: 1, y: 2, z: 3) # => in `initialize': unknown keyword: :z (ArgumentError)
//}

下の例のように、initialize メソッドをオーバーライドすることで new の...

Data.new(**kwargs) -> Data (80.0)

(このメソッドは Data のサブクラスにのみ定義されています) 値オブジェクトを生成して返します。

...す。

new に渡す引数の数がメンバの数より少ない場合は new ではエラーにならず、そのまま initialize に渡されます。
ユーザが initialize のオーバーライドを通して、少ない引数のときの適切な振舞いを実装可能とするためです...
...
残りのケースではエラーの発生箇所は new ではなく initialize であることに注意してください。

//emlist[例][ruby]{
Point = Data.define(:x, :y)

Point.new(1) # => in `initialize': missing keyword: :y (ArgumentError)
Point.new(1, 2, 3) # =...
...ed 0..2) (ArgumentError)
Point.new(x: 1) # => in `initialize': missing keyword: :y (ArgumentError)
Point.new(x: 1, y: 2, z: 3) # => in `initialize': unknown keyword: :z (ArgumentError)
//}

下の例のように、initialize メソッドをオーバーライドすることで new の...

絞り込み条件を変える

Data.new(*args) -> Data (80.0)

(このメソッドは Data のサブクラスにのみ定義されています) 値オブジェクトを生成して返します。

...す。

new に渡す引数の数がメンバの数より少ない場合は new ではエラーにならず、そのまま initialize に渡されます。
ユーザが initialize のオーバーライドを通して、少ない引数のときの適切な振舞いを実装可能とするためです...
...
残りのケースではエラーの発生箇所は new ではなく initialize であることに注意してください。

//emlist[例][ruby]{
Point = Data.define(:x, :y)

Point.new(1) # => in `initialize': missing keyword: :y (ArgumentError)
Point.new(1, 2, 3) # =...
...ed 0..2) (ArgumentError)
Point.new(x: 1) # => in `initialize': missing keyword: :y (ArgumentError)
Point.new(x: 1, y: 2, z: 3) # => in `initialize': unknown keyword: :z (ArgumentError)
//}

下の例のように、initialize メソッドをオーバーライドすることで new の...

Data.define(*args) -> Class (68.0)

Data クラスに新しいサブクラスを作って、それを返します。

...y: "Current time is #{Time.now}")
else
NotFound.new
end

end

end


def fetch(url)
fetcher = HTTPFetcher.new
case fetcher.get(url)
in HTTPFetcher::Response(body)
body
in HTTPFetcher::NotFound
:NotFound
end

end


p fetch("http://example.com/") # => "Current time is 2...
...ess) do
def greeting
"Hello #{name}!"
end

end

p Customer.new("Dave", "123 Main").greeting # => "Hello Dave!"
//}

なお、Dataのサブクラスのインスタンスを生成する際にオプション引数を使用したいときは、
initialize
メソッドをオーバーライドする...
...ことで実現できます。

//emlist[例][ruby]{
Point = Data.define(:x, :y) do
def initialize(x:, y: 0)
super
end

end


p Point.new(x: 1) # => #<data Point x=1, y=0>
p Point.new(x: 1, y: 2) # => #<data Point x=1, y=2>
//}...

Data.define(*args) {|subclass| block } -> Class (68.0)

Data クラスに新しいサブクラスを作って、それを返します。

...y: "Current time is #{Time.now}")
else
NotFound.new
end

end

end


def fetch(url)
fetcher = HTTPFetcher.new
case fetcher.get(url)
in HTTPFetcher::Response(body)
body
in HTTPFetcher::NotFound
:NotFound
end

end


p fetch("http://example.com/") # => "Current time is 2...
...ess) do
def greeting
"Hello #{name}!"
end

end

p Customer.new("Dave", "123 Main").greeting # => "Hello Dave!"
//}

なお、Dataのサブクラスのインスタンスを生成する際にオプション引数を使用したいときは、
initialize
メソッドをオーバーライドする...
...ことで実現できます。

//emlist[例][ruby]{
Point = Data.define(:x, :y) do
def initialize(x:, y: 0)
super
end

end


p Point.new(x: 1) # => #<data Point x=1, y=0>
p Point.new(x: 1, y: 2) # => #<data Point x=1, y=2>
//}...

Thread::ConditionVariable (68.0)

スレッドの同期機構の一つである状態変数を実現するクラスです。

....new

a = Thread.start {
mutex.synchronize {
...
while (条件が満たされない)
cv.wait(mutex)
end

...
}
}

b = Thread.start {
mutex.synchronize {
# 上の条件を満たすための操作...
...す。

require 'thread'

class TinyQueue
def initialize(max=2)
@max = max
@full = ConditionVariable.new
@empty = ConditionVariable.new
@mutex = Mutex.new
@q = []
end


def count
@q.size
end


def enq(v)
@mutex.synchronize{
@ful...
...@empty.signal if count == 1
}
end


def deq
@mutex.synchronize{
@empty.wait(@mutex) if count == 0
v = @q.shift
@full.signal if count == (@max - 1)
v
}
end


alias send enq
alias recv deq
end


if __FILE__ == $0
q = TinyQue...

ObjectSpace.#define_finalizer(obj) {|id| ...} -> Array (62.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 の呼び出しで発生した大域脱出(exitや例外)は無視されます...
...いでしょう。

//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
//}

@see spec/rubycmd...

絞り込み条件を変える

ObjectSpace.#define_finalizer(obj, proc) -> Array (62.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 の呼び出しで発生した大域脱出(exitや例外)は無視されます...
...いでしょう。

//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
//}

@see spec/rubycmd...

Thread::Backtrace::Location (56.0)

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

...成されます。

//emlist[例1][ruby]{
# caller_locations.rb
def a(skip)
caller_locations(skip)
end

def b(skip)
a(skip)
end

def c(skip)
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_l...
...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

//}

例2の実行結果:

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

=== 参考

* Ruby VM アドベント...

BasicObject#instance_eval {|obj| ... } -> object (44.0)

オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを 評価してその結果を返します。

...トレースの表示などを差し替えることができます。

//emlist[例][ruby]{
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} #=> "XXX"
some.instance_eval{do_fuga } #=> "secret" # pr...
...99: unknown (RuntimeError)
//}

//emlist[例][ruby]{
class Bar < BasicObject
def call1
instance_eval("::ENV.class")
end

def call2
instance_eval("ENV.class")
end

end


bar = Bar.new
bar.call1 # => Object
bar.call2 # raise NameError
//}

@see Module#module_eval, Kernel.#eval, BasicObjec...
<< 1 2 3 ... > >>