2011-01-17 18 views
28

Czy w Rubim istnieją różnice między Proc.new { 'waffles' } a proc { 'waffles' }? Znalazłem bardzo niewiele wzmianek o drugiej składni.Ruby: Proc.new {'gofry}} vers proc {' gofry}}

Z testów przeprowadzonych przy użyciu irb, nie znalazłem żadnych oczywistych różnic. Czy drugi cukier syntaktyczny jest pierwszy?

Odpowiedz

42

Od Metaprogamming Ruby strona 113.

w Ruby 1.8 Kernel # proc() jest właściwie synonimem Kernel # lambda(). Z powodu głośnego protestu ze strony programistów, Ruby 1.9 uczynił proc() synonimem Proc.new().

+0

Chwalebnie. Używam 1,9, więc w moim przypadku nie ma różnic. – ClosureCowboy

+1

Patrz także: http://books.google.ca/books?id=jcUbTcr5XWwC&pg=PA194&lpg=PA194&dq=ruby+proc+synonym&source=bl&ots=fHJltd8taE&sig=pHkE5W-c9iHHHHfacmuPzeYuI48&hl=en&ei=fuMzTanHDo2usAPyqLTgBQ&sa=X&oi=book_result&ct=result&resnum=6&ved= 0CDUQ6AEwBQ # v = onepage & q = ruby% 20proc% 20synonym & f = false – Zabba