0
我有兩個類。我想命名空間他們。我也有一些他們分享的功能。我這樣做:在模塊中包含模塊
module Talker
def say_bye
puts 'bye'
end
class Bob
include Talker
def say_yo
puts 'yo'
end
end
class Tom
include Talker
def say_hello
puts 'hello'
end
end
end
這些都是有效的方法調用。
Talker::Bob.new.say_yo
Talker::Bob.new.say_bye
Talker::Tom.new.say_hello
Talker::Tom.new.say_bye
有人告訴我:「這是include
將再次包括Bob
你應該開始一個類,包含Talker
之前關閉Talker
模塊。」有人可以向我解釋,如果我正在做的事情導致意外的紅寶石行爲或被視爲禁忌?在模塊內的類中包含一個像這樣的模塊是不好的做法?對這種模式可能有什麼批評?我應該在這裏使用繼承嗎?
你確定'Bob.new.say_yo'等是否有效(來自主環境)? – sawa 2014-09-29 19:08:07
您的示例不會產生您遇到的錯誤 – mdesantis 2014-09-29 19:30:10
已編輯:調用不起作用,因爲我沒有在類前面的名稱空間。問題不是「爲什麼不這樣做」或「爲什麼它錯誤」?它的工作原理,沒有錯誤。問題是如果A)可以這樣做嗎?和B)它在幕後做了什麼我不知道的壞事? – 2014-09-29 22:02:51