読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

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