0

私がメソッド(実際にはヘルパー)を持っているとしましょう:

def f(x)  
  x + 1  
end

私がやりたいのは、次のように列挙可能なものにマップすることです。

(1..10).map &f

ArgumentError: wrong number of arguments (0 for 1) 明らかにエラーを発生させることはできません。私はこのメソッドを次のようにブロックで呼び出すことができることを知っています:

(1..10).map {|x| f x }

しかし、それは私にはエレガントな解決策のようには見えません。それについて他に何ができるでしょうか?

4

2 に答える 2

4

あなたが使用することができます:

(1..10).map(&method(:f))
于 2012-10-08T21:07:02.643 に答える
2

まず第一に、私はこれに優雅さを見ません

(1..10).map {|x| f x }

通常はそれを使用する必要があります。ただし、特別な状況では、特別なフォームを使用できます(オブジェクトでメソッドを呼び出す必要があり、そのメソッドは引数を受け入れません)。

class Fixnum
  def f
    self + 1
  end
end

(1..10).map(&:f)

これらの2つのアプローチの間で、私はいつでも最初のアプローチを取ります。

于 2012-10-08T21:09:41.767 に答える