2011-01-17 4 views
28

В Ruby существуют ли различия между Proc.new { 'waffles' } и proc { 'waffles' }? Я нашел очень мало упоминаний о втором синтаксисе.Ruby: Proc.new {'waffles'} vs. proc {'waffles'}

От тестирования с использованием irb я не обнаружил очевидных различий. Является ли второй синтаксический сахар первым?

ответ

42

От Metaprogamming рубинового Page 113.

В Ruby 1.8, Kernel # Proc() на самом деле является синонимом Kernel # лямбда(). Из-за громкого протеста со стороны программистов Ruby 1.9 сделал proc() синонимом для Proc.new().

+0

Славный. Я использую 1.9, поэтому в моем случае нет различий. – ClosureCowboy

+1

Смотрите также: 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 & д = рубинового% 20proc% 20synonym & F = ложь – Zabba