如何在同一個模塊內使用此方法的類中定義方法?如何在模塊內部定義一個方法?
我想要做什麼:
module X
def bar
puts 'Hello'
end
class Y
def foo
bar
end
end
end
我想打電話給使用Y.new.foo
例如bar
方法。我想在我的模塊中定義方法,以便模塊中的所有類都會繼承它們。
爲什麼不能正常工作?什麼是最接近的方式來做到這一點?
如何在同一個模塊內使用此方法的類中定義方法?如何在模塊內部定義一個方法?
我想要做什麼:
module X
def bar
puts 'Hello'
end
class Y
def foo
bar
end
end
end
我想打電話給使用Y.new.foo
例如bar
方法。我想在我的模塊中定義方法,以便模塊中的所有類都會繼承它們。
爲什麼不能正常工作?什麼是最接近的方式來做到這一點?
假設您不希望在該類中包含該模塊,則不能引用該方法,因爲沒有實例可以調用它。您可以改爲:
module X
def self.bar
puts 'Hello'
end
class Y
def foo
X.bar
end
end
end
,最好使用包括
module X
def bar
puts 'Hello'
end
class Y
include X
def foo
bar
end
end
end
在foo中使用X.bar。 –
我用X :: Y.new.foo測試過,它工作正常 –
我認爲這是最好使用一個單獨的對象定義共享的方法,而不是污染名字空間目的。
module X
module InstanceMethods
def bar
puts 'Hello'
end
end
class Y
include InstanceMethods
def foo
bar
end
end
end
爲什麼在這種特殊情況下類聲明的順序很重要?我的意思是Y類必須在模塊InstanceMethods之後聲明。 –
你想要做什麼?它怎麼不起作用?你會得到什麼錯誤? – Mhmd
用英文書寫時請使用英文標點符號。 – sawa