Ruby 什么是&of&;:你在做什么?
我正在查看某人的ruby代码,他们在其中编写了类似的内容:Ruby 什么是&of&;:你在做什么?,ruby,symbols,proc,Ruby,Symbols,Proc,我正在查看某人的ruby代码,他们在其中编写了类似的内容: class Example attr_reader :val def initialize(val) @val = val end end def trigger puts self.val end anArray = [Example.new(10), Example.new(21)] anArray.each(&:trigger) :触发器意味着符号被提取,&将其转换为过程 如果这是正确的,除了
class Example
attr_reader :val
def initialize(val)
@val = val
end
end
def trigger
puts self.val
end
anArray = [Example.new(10), Example.new(21)]
anArray.each(&:trigger)
:触发器
意味着符号被提取,&
将其转换为过程
如果这是正确的,除了使用self.
,还有没有其他方法将变量传递到触发器中
这是相关的,但从未回答过:Symbol#to_proc
是调用无参数方法的快捷方式。如果需要传递参数,请使用完整表单
[100, 200, 300].map(&:to_s) # => ["100", "200", "300"]
[100, 200, 300].map {|i| i.to_s(16) } # => ["64", "c8", "12c"]
有没有办法将变量传递到触发器中
没有
您正在调用Symbol#to_proc
,这不允许您指定任何参数。这是Ruby为调用不带参数的方法而专门提供的一点便利
如果需要参数,则必须使用完整的块语法:
anArray.each do |i|
i.trigger(arguments...)
end
这将完全满足您的需要:
def trigger(ex)
puts ex.val
end
anArray = [Example.new(10), Example.new(21)]
anArray.each(&method(:trigger))
# 10
# 21
我在文件里找不到这个,你是怎么学会的/我自己能学会吗?谢谢。谷歌“符号到程序”。第二个链接是到。很好,我只是尝试了
&:
,因此没有找到任何东西,包括该文档中的(&:to)
。相关问题:谢谢@andrewgrim,这增加了它的深度。还相关: