我想将一个模块实现为一个类结构。
我是用简单的逻辑做的(也许,你想出了最佳性能的想法):
module Tsito
class Hello
def say_hello(name)
puts "Module > Class: Hello #{name}"
end
end
end
tsio = Tsito::Hello.new
tsio.say_hello("Sara")
但是,我能做到。你有什么想法?
class Hello
module Tsito
def say_hello(name)
puts "Class > Module: Hello #{name}"
end
end
end
tsio = Hello.new
#tsio.say_hello("Sara") // Gives an error
答案 0 :(得分:2)
首先,模块与性能无关。它的主要用途是代码组织(命名空间)和mixins。
将类放在模块下是我以前要做的,但我没有尝试过,反之亦然。但它完全有效。
在第二个例子中,您只需将一个模块放在类中,并期望Ruby将模块包含在其父级中。但它无法完成。你必须手动完成。只需在行尾添加include:
class Hello
module Tsito
def say_hello(name)
puts "Class > Module: Hello #{name}"
end
end
include Tsito
end
现在尝试
Hello.new.say_hello "hola"
这将按预期工作。
请记住,您需要在任何想要使用该模块的地方使用include
。