Ruby 初心者スレッド Part 36
レス数が950を超えています。1000を超えると書き込みができなくなります。
0970デフォルトの名無しさん
2010/05/16(日) 13:13:22irb> class C; class << self; include M; end; end
irb> puts C.foo
M#foo
irb> puts C.new.foo
NoMethodError: undefined method `foo' for #<C:0xb74a8e24>
irb> class C; include M; end
irb> puts C.new.foo
M#foo
include M は self に M のインスタンスメソッドをクラスメソッドとして追加する
このときクラスメソッドと呼ぶとわけがわからなくなるので特異メソッドとか呼んだりする
M のクラスメソッドは M = Class.new('M') のようなイメージで生成されたオブジェクト M にくっついてるメソッドなので
include や extend で外に持ち出すことはできない
include や extend して使いたいメソッドは M でインスタンスメソッドとして定義する
レス数が950を超えています。1000を超えると書き込みができなくなります。