直接访问模块方法没有运算符('。'或'::')

时间:2015-10-05 21:23:47

标签: ruby methods module

我正在尝试构建一个可以包含在任何类中的模块,并且可以直接调用它的方法。

红宝石宝石colored就是一个很好的例子。例如,我可以通过执行类似Colored之类的操作来调用puts "I am the color blue!".blue模块中的方法。但是,这不是任何类。但我注意到他们调用了String.send(:include, Colored)

感谢任何见解。

目标:

module Example
  def do_something
    puts 'foo!'
  end
end

# Instead of calling Example::do_something or Example.do_something,
# I want to do this:
do_something # => 'foo!'

(方式不正确)

module Example
  extend self 

  def do_something
    puts 'foo!'
  end
end

do_something # => undefined local variable or method `do_something' for main:Object (NameError)

(另一种不正确的方式)

module Example
  extend self # not sure...

  def self.do_something
    puts 'foo!'
  end
end

do_something # => undefined local variable or method `do_something' for main:Object (NameError)

1 个答案:

答案 0 :(得分:3)

尝试像这样运行

module Example
  def do_something
    puts 'foo!'
  end
end

include Example
do_something #=> foo!