-1

ミックスインのクラスでモジュール メソッドを拡張しようとしています。

これが私のコードです:

module Mod_1
    def bar
        puts "xxx"
    end
end

class Class_A
    include Mod_1
    def bar
        super
        puts "yyy"
     end
end

test = Class_A.new
test.bar

私が考えることができる最善の方法は次のとおりです。

module Mod_1
    def Mod_1.foo
        puts "aaa"
    end
end

class Class_A
    include Mod_1
    def foo
        Mod_1.foo
        puts "bbb"
     end
end

test = Class_A.new
test.foo

これを行うためのより良い方法はありますか?

4

1 に答える 1

1

以下を参照してください。

module Bar
    def foo
        puts "first"
    end
end

class Class_A
    include Bar
    alias old_foo foo
    def foo
        old_foo
        puts "second"
    end
end

Class_A.new.bar

戻る:

"first"
"second"

これはエイリアシングを使用します。特に、あなたがやろうとしていることのようなものについては、Rubyを探すことをお勧めします。

読んでください:http: //ruby.about.com/od/rubyfeatures/a/aliasing.html

于 2013-01-23T09:14:05.830 に答える