2012-03-03 69 views
0

擴展模塊功能的方法是什麼?下面,我想用B.foo如何擴展模塊功能

module A 
    module_function 
    def foo; end 
end 
module B 
    extend A 
end 
B.foo 

但它返回的錯誤:

private method `foo' called for B:Module. 

回答

2

如果你想使用它直接,你需要把它公開爲好。

module A 
    module_function 
    public 
    def hello 
    puts "Hello" 
    end 
end 

module B 
    extend A 
end 


B.hello 
1

documentation:「實例方法版本是私有的。」

通過擴展模塊B,您已將函數foo添加到對象B。這是因爲在ruby模塊中也是一個對象。您可以通過以下方式查看:

B.respond_to?(:foo,true) #=> true