-1

我正在尝试为 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

有没有更好的方法可以做到这一点?

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 回答