-1

私は誰かの 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

4

3 に答える 3

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"]
于 2012-08-07T13:46:16.663 に答える
2

変数をトリガーに渡す方法はありますか

いいえ。

Symbol#to_proc引数を指定できない呼び出しを行っています。これは、特に引数なしでメソッドを呼び出すために Ruby が提供する便利な機能です。

引数が必要な場合は、完全なブロック構文を使用する必要があります。

anArray.each do |i|
  i.trigger(arguments...)
end
于 2012-08-07T13:46:23.690 に答える