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.
擴展模塊功能的方法是什麼?下面,我想用B.foo
如何擴展模塊功能
module A
module_function
def foo; end
end
module B
extend A
end
B.foo
但它返回的錯誤:
private method `foo' called for B:Module.
如果你想使用它直接,你需要把它公開爲好。
module A
module_function
public
def hello
puts "Hello"
end
end
module B
extend A
end
B.hello
從documentation:「實例方法版本是私有的。」
通過擴展模塊B,您已將函數foo
添加到對象B
。這是因爲在ruby模塊中也是一個對象。您可以通過以下方式查看:
B.respond_to?(:foo,true) #=> true