带有模块mixin的Ruby类

时间:2013-01-23 09:12:58

标签: ruby oop

我正在尝试在类中为mixin扩展模块方法。

这是我的代码:

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

我有更好的方法吗?

1 个答案:

答案 0 :(得分: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"

这使用别名。我建议特别为你想要的东西查找它们。

阅读: http://ruby.about.com/od/rubyfeatures/a/aliasing.html