クラス階層が必要のないグローバル関数を、グローバルな名前空間を汚さないためにModuleとしてまとめる方法。
moduleに定義したインスタンスメソッドをmix-inする方法( include, extend)
includeはインスタンスメソッドとして織りまぜ、
extendは特異メソッドとして織りまぜる。
module SampleModule # class method def self.hello puts "hello" end # class method def self.goodby puts "goodby" end # instance method def good_morning puts "good_morning" end end class IncludeMod # インスタンスメソッドとしてinclude include SampleModule end class ExtendMod # クラスメソッドとしてextend # この時のselfはクラスの中、メソッド定義の外なので ExtendModクラスをサス(P225) self.extend SampleModule #ExtendMod.extend SampleModule end SampleModule.hello SampleModule.goodby IncludeMod.new.good_morning ExtendMod.good_morning
No comments:
Post a Comment