2015-09-25 50 views
-2

如何在同一個模塊內使用此方法的類中定義方法?如何在模塊內部定義一個方法?

我想要做什麼:

module X 
    def bar 
    puts 'Hello' 
    end 

    class Y 
    def foo 
     bar 
    end 
    end 
end 

我想打電話給使用Y.new.foo例如bar方法。我想在我的模塊中定義方法,以便模塊中的所有類都會繼承它們。

爲什麼不能正常工作?什麼是最接近的方式來做到這一點?

+0

你想要做什麼?它怎麼不起作用?你會得到什麼錯誤? – Mhmd

+0

用英文書寫時請使用英文標點符號。 – sawa

回答

3

假設您不希望在該類中包含該模塊,則不能引用該方法,因爲沒有實例可以調用它。您可以改爲:

module X 
    def self.bar 
    puts 'Hello' 
    end 

    class Y 
    def foo 
     X.bar 
    end 
    end 
end 
0
,如果你想用很多方法

,最好使用包括

module X 
    def bar 
    puts 'Hello' 
    end 

    class Y 
    include X 
    def foo 
     bar 
    end 
    end 
end 
+0

在foo中使用X.bar。 –

+0

我用X :: Y.new.foo測試過,它工作正常 –

1

我認爲這是最好使用一個單獨的對象定義共享的方法,而不是污染名字空間目的。

module X 

    module InstanceMethods 
    def bar 
     puts 'Hello' 
    end 
    end 

    class Y 
    include InstanceMethods 
    def foo 
     bar 
    end 
    end 

end 
+0

爲什麼在這種特殊情況下類聲明的順序很重要?我的意思是Y類必須在模塊InstanceMethods之後聲明。 –

相關問題