2011-01-17 22 views
28

Trong Ruby, có sự khác biệt nào giữa Proc.new { 'waffles' }proc { 'waffles' } không? Tôi đã tìm thấy rất ít đề cập đến cú pháp thứ hai.Ruby: Proc.new {'waffles'} so với proc {'waffles'}

Từ thử nghiệm sử dụng irb, tôi không tìm thấy bất kỳ sự khác biệt rõ ràng nào. Là cú pháp thứ hai cho lần đầu tiên?

Trả lời

42

Từ Metaprogamming của Ruby Trang 113.

Trong Ruby 1.8, Kernel # proc() thực sự là một từ đồng nghĩa với Kernel # lambda(). Do sự phản đối lớn từ các lập trình viên, Ruby 1.9 đã tạo proc() một từ đồng nghĩa cho Proc.new() thay thế.

+0

Vinh quang. Tôi đang sử dụng 1,9, vì vậy trong trường hợp của tôi, không có sự khác biệt. – ClosureCowboy

+1

Xem thêm: 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% 20 từ đồng nghĩa & f = false – Zabba

Các vấn đề liên quan