2011-03-15 6 views
7
numbers = 1..10 
print numbers.map {|x| x*x} 

# I want to do: 
square = {|x| x*x} 
print numbers.map square 

構文がより簡潔であるためです。私はそこに使用することなくこれを行う方法def + endRubyでブロックを定義/名前を付けるにはどうしたらいいですか?

+0

が異なるいくつかの方法があります:あなたはは何ができるか

は、変数にProcオブジェクトを割り当て、その後、&単項演算子を使用してブロックすることに変換されオブジェクトとしてブロックします。そのうちのいくつかは廃止予定です。 TIMTOWTDIは実際にここに適用されます。 –

答えて

13
square = proc {|x| x**2 } 
print number.map(&square) 
+0

ありがとうございましたLBg、&は何ですか? –

+1

'&'ブロック上のProcオブジェクトをメソッドに変換します。 –

1
numbers = 1..10 
square = lambda{|x| x*x } 
numbers.map &square 
8

ブロックが本当にそれ自体が目的ではないので、あなたは変数にブロックを割り当てることができません。作成に

numbers = 1..10 
print numbers.map {|x| x * x } 

square = -> x { x * x } 
print numbers.map &square 
+4

私の答えを編集した人と、その編集を承認した2人の人:あなたが何をしているのか分からなければ、しばらくしないでください。私は間違いを修正する人には問題ありませんが、それらを紹介するのは大丈夫ではありません。私のコードは完璧に動作し、あなたのものだけでなく、パースもしません。 –

関連する問題