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