什么是:中:机能缺失在做什么? [重复](What is the &: of &:aFuncti

2019-06-26 19:39发布

这个问题已经在这里有一个答案:

  • 是什么图:红宝石(名称)是什么意思? 15个回答

我检讨别人的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)

:trigger装置的符号被取和&将其转换为一个proc

如果这是正确的,是有变量传递到触发除了采用任何方式self.

这是相关的,但从来没有回答: http://www.ruby-forum.com/topic/198284#863450

Answer 1:

有没有传递变量到触发任何方式

没有。

你调用Symbol#to_proc不允许你指定的任何参数。 这是糖红宝石的一个方便的位专门用于调用方法不带参数的提供。

如果你想争论,你必须使用完整的块语法:

anArray.each do |i|
  i.trigger(arguments...)
end


Answer 2:

Symbol#to_proc是调用方法不带参数的快捷方式。 如果你需要传递参数,使用完整形式。

[100, 200, 300].map(&:to_s) # => ["100", "200", "300"]
[100, 200, 300].map {|i| i.to_s(16) } # => ["64", "c8", "12c"]


Answer 3:

这将不正是你所需要的:

def trigger(ex)
  puts ex.val
end

anArray = [Example.new(10), Example.new(21)]
anArray.each(&method(:trigger))
# 10
# 21


文章来源: What is the &: of &:aFunction doing? [duplicate]