2011-01-17 14 views
28

En Ruby, ¿hay alguna diferencia entre Proc.new { 'waffles' } y proc { 'waffles' }? He encontrado muy pocas menciones de la segunda sintaxis.Ruby: Proc.new {'waffles'} vs. proc {'waffles'}

De las pruebas con irb, no he encontrado ninguna diferencia obvia. ¿Es el segundo azúcar sintáctico para el primero?

Respuesta

42

De Metaprogamming Rubí Página 113.

en Ruby 1.8, Kernel # proc() es en realidad un sinónimo de Kernel # lambda(). Debido a las fuertes protestas de los programadores, Ruby 1.9 hizo proc() un sinónimo de Proc.new() en su lugar.

+0

Glorioso. Estoy usando 1.9, entonces en mi caso, no hay diferencias. – ClosureCowboy

+1

Ver también: 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