以下の内容はhttps://unageanu.hatenablog.com/entry/20080413/1208083475より取得しました。


moduleのメソッドをクラスメソッドとして追加したい

moduleのメソッドを、クラスのクラスメソッドとして追加したい場合、Object#extendが利用できます。

# モジュール
module Foo
  def foo
    puts "foo"
  end
  def self.var
    puts "var"
  end
end

# Fooをextend
class ExtendFoo
  extend Foo
end
#ExtendFoo.extend Foo # これでも良い。

# Fooをinclude
class IncludeFoo
  include Foo
end


# fooのメソッドが、ExtendFooのクラスメソッドとして追加される。
ExtendFoo.foo

# インスタンスメソッドにはならない
#extendFoo = ExtendFoo.new
#extendFoo.foo # NoMethodError

# includeではクラスメソッドとしては追加されない。
#IncludeFoo.foo # NoMethodError
includeFoo = IncludeFoo.new
includeFoo.foo

# モジュールのクラスメソッドはメソッドincludeまたはextendの対象にならない。
# varはどちらにも追加されない。
#ExtendFoo.var # NoMethodError
#includeFoo.var # NoMethodError

実行結果です。

foo
foo



以上の内容はhttps://unageanu.hatenablog.com/entry/20080413/1208083475より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14