2011-01-17 1 views
28

En Ruby, y a-t-il des différences entre Proc.new { 'waffles' } et proc { 'waffles' }? J'ai trouvé très peu de mentions de la seconde syntaxe.Ruby: Proc.new {'gaufres} vs proc {' waffles}

D'après les tests utilisant irb, je n'ai trouvé aucune différence évidente. Est-ce que le deuxième sucre syntaxique est le premier?

Répondre

42

De Metaprogamming Ruby page 113.

Dans Ruby 1.8, noyau # proc() est en fait un synonyme de noyau # lambda(). En raison de la forte protestation des programmeurs, Ruby 1.9 a fait de proc() un synonyme de Proc.new() à la place.

+0

Glorieux. J'utilise 1.9, donc dans mon cas, il n'y a pas de différences. – ClosureCowboy

+1

Voir aussi: 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