我正在尝试构建一个可以包含在任何类中的模块,并且可以直接调用它的方法。
红宝石宝石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)
答案 0 :(得分:3)
尝试像这样运行
module Example
def do_something
puts 'foo!'
end
end
include Example
do_something #=> foo!