トップ «前の日記(2006-07-18) 最新 次の日記(2006-07-24)» 編集

活動日誌


2006-07-19

[Ruby]Method と UnboundMethod

インスタンスからメソッドを取り出すには method を使う。

>> class C
>>   def initialize(n); @n = n; end
>>   def f; p @n; end
>>   end
=> nil
>> c = C.new(5)
=> #<C:0x4afcd30 @n=5>
>> m = c.method(:f)
=> #<Method: C#f>
>> m.call
5
=> nil

クラス(モジュール)から取り出す場合は instance_method を使う。 これはインスタンスを bind しなければ呼べない。

>> mm = C.instance_method(:f)
=> #<UnboundMethod: C#f>
>> mm.bind(c)
=> #<Method: C#f>
>> mm.bind(c).call
5
=> nil

2005|02|03|04|05|06|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|03|04|05|06|10|
2008|04|10|
2009|10|
2010|05|08|
2012|01|02|03|
2014|01|
2022|05|
トップ «前の日記(2006-07-18) 最新 次の日記(2006-07-24)»