88件ヒット
[1-88件を表示]
(0.261秒)
ライブラリ
- ビルトイン (88)
キーワード
- BasicObject (11)
- InstructionSequence (11)
- NameError (11)
- NoMethodError (11)
- Numeric (11)
- Proc (11)
- UnboundMethod (11)
検索結果
-
Method (46089.0)
-
Object#method によりオブジェクト化され たメソッドオブジェクトのクラスです。
...ject#method によりオブジェクト化され
たメソッドオブジェクトのクラスです。
メソッドの実体(名前でなく)とレシーバの組を封入します。
Proc オブジェクトと違ってコンテキストを保持しません。
=== Proc との差
Method は......は使い捨てに向き、Method は何度も繰り返し生成する
場合に向くと言えます。また内包するコードの大きさという点では
Proc は小規模、Method は大規模コードに向くと言えます。
既存のメソッドを Method オブジェクト化する......。
//emlist[例][ruby]{
class Foo
def foo(arg)
"foo called with arg #{arg}"
end
end
m = Foo.new.method(:foo)
p m # => #<Method: Foo#foo>
p m.call(1) # => "foo called with arg 1"
//}
名前のないメソッド(の代わり)が必要なら Proc を使うと良い。
//em... -
UnboundMethod (14049.0)
-
レシーバを持たないメソッドを表すクラスです。 呼び出すためにはレシーバにバインドする必要があります。
...ります。
Module#instance_method や
Method#unbind により生成し、後で
UnboundMethod#bind によりレシーバを
割り当てた Method オブジェクトを作ることができます。
//emlist[例: Method クラスの冒頭にある例を UnboundMethod で書くと以下のよう......注意
methods = {1 => Foo.instance_method(:foo),
2 => Foo.instance_method(:bar),
3 => Foo.instance_method(:baz)}
# キーを使って関連するメソッドを呼び出す
# レシーバは任意(Foo クラスのインスタンスでなければならない)
p methods[1].bin......call # => "foo"
p methods[2].bind(Foo.new).call # => "bar"
p methods[3].bind(Foo.new).call # => "baz"
//}
//emlist[例: 以下はメソッドの再定義を UnboundMethod を使って行う方法です。普通は alias や super を使います。][ruby]{
class Foo
def foo
p :... -
NoMethodError (14019.0)
-
定義されていないメソッドの呼び出しが行われたときに発生します。
...例:
self.bar
# => -:1: undefined method `bar' for #<Object:0x401a6c40> (NoMethodError)
プライベートなインスタンスメソッドを呼び出そうとした場合にも発生します。
例:
"".puts
# => NoMethodError: private method `puts' called for "":String
メソッド......呼び出しの形式でなければ NameError 例外が発生します。
例:
bar
# => -:1: undefined local variable or method `bar' for #<Object:0x401a6c40> (NameError)... -
Proc (8025.0)
-
ブロックをコンテキスト(ローカル変数のスコープやスタックフ レーム)とともにオブジェクト化した手続きオブジェクトです。
...m_proc }
f.call
return :from_method
end
def test_lambda
f = lambda { return :from_lambda }
f.call
return :from_method
end
def test_block
tap { return :from_block }
return :from_method
end
p test_proc() #=> :from_proc
p test_lambda() #=> :from_method
p test_block() #=> :from_block... -
BasicObject (8013.0)
-
特殊な用途のために意図的にほとんど何も定義されていないクラスです。 Objectクラスの親にあたります。Ruby 1.9 以降で導入されました。
...クラスを定義する際には Object クラスは持っているメソッドが多すぎる
場合があります。
例えば、 BasicObject#method_missingを利用して Proxy パターンを実
装する場合にはObject クラスに定義済みのメソッドはプロクシできないと......に必要な場合にだけ BasicObject から派生してください。
=== 例
//emlist[例][ruby]{
class Proxy < BasicObject
def initialize(target)
@target = target
end
def method_missing(message, *args)
@target.__send__(message, *args)
end
end
proxy = Proxy.new("1")
proxy.t... -
NameError (8007.0)
-
未定義のローカル変数や定数を使用したときに発生します。
...未定義のローカル変数や定数を使用したときに発生します。
例:
bar
# => NameError: undefined local variable or method `bar' for main:Object... -
Numeric (8007.0)
-
数値を表す抽象クラスです。Integer や Float などの数値クラス は Numeric のサブクラスとして実装されています。
...o - - -
round | o o - - o o -
singleton_method_added | o - - - - - -
size | - - o o......d
//}
また、任意桁の切上げ、切捨て、四捨五入を行うメソッドは以下のように
定義できます。
//emlist[][ruby]{
class Numeric
def roundup(d=0)
x = 10**d
if self > 0
self.quo(x).ceil * x
else
self.quo(x).floor * x
end
end
def roun......der | o o - - -
round | o o o o -
singleton_method_added | o - - - -
size | - o - - -... -
RubyVM
:: InstructionSequence (8007.0) -
Ruby の Virtual Machine のコンパイル済みの命令シーケンスを表すクラスです。
...Ruby の Virtual Machine のコンパイル済みの命令シーケンスを表すクラスです。
Method、Proc オブジェクトや Ruby のソースコードを表す文字列
から VM の命令シーケンスを得る事ができます。また、
RubyVM::InstructionSequence オブジェク...