2011-01-17 9 views
28

In Ruby, ci sono differenze tra Proc.new { 'waffles' } e proc { 'waffles' }? Ho trovato pochissime menzioni sulla seconda sintassi.Ruby: Proc.new {'waffle'} vs. proc {'waffle'}

Dal test utilizzando irb, non ho trovato differenze evidenti. È il secondo zucchero sintattico per il primo?

risposta

42

Da Metaprogamming Rubino Pagina 113.

In Ruby 1.8, Kernel # proc() è in realtà sinonimo di Kernel # lambda(). A causa della forte protesta dei programmatori, Ruby 1.9 ha reso proc() invece un sinonimo di Proc.new().

+0

Glorioso. Sto usando 1.9, quindi nel mio caso non ci sono differenze. – ClosureCowboy

+1

Vedi anche: 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 = rubino% 20proc% 20synonym & f = false – Zabba