如何在Ruby中的类中实现模块?

时间:2011-06-17 08:33:25

标签: ruby class module

我想将一个模块实现为一个类结构。

我是用简单的逻辑做的(也许,你想出了最佳性能的想法):

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

1 个答案:

答案 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