如何在ruby中将服务对象/模块作为参数传递
在ruby中,是否可以使用模块或对象作为每个方法的参数 我需要像这样的东西如何在ruby中将服务对象/模块作为参数传递,ruby,ruby-on-rails-3,metaprogramming,Ruby,Ruby On Rails 3,Metaprogramming,在ruby中,是否可以使用模块或对象作为每个方法的参数 我需要像这样的东西 module PrintAny def call(text) puts text end end ["any"].each PrintAny 我不知道这什么时候能用在现实生活中,但是…: ['any'].each &PrintAny.instance_method(:call).bind(Object) #=> any 差不多。您可以将模块转换为proc,并以这种方式使用: modu
module PrintAny
def call(text)
puts text
end
end
["any"].each PrintAny
我不知道这什么时候能用在现实生活中,但是…:
['any'].each &PrintAny.instance_method(:call).bind(Object)
#=> any
差不多。您可以将模块转换为proc,并以这种方式使用:
module PrintAny
def self.print(text)
puts text
end
def self.to_proc
method(:print).to_proc
end
end
["any"].each &PrintAny # => prints "any"
Enumerable#每个
都需要传递一个块,通过首先调用对象上的到_proc
,符号运算符(&
)将对象转换为块。而模块只是对象,因此,如果它们有一个方法来处理
,这将起作用