2010-07-20 31 views
8

Gần đây tôi đã chạy vào mã mà trông như thế này:Cú pháp Ruby này là gì?

next { 
      'foo'   => bar, 
      'foobar'  => anotherbar, 
     } 

Lúc đầu, nó trông giống như một băm đơn giản, nhưng không có nhiệm vụ vào tiếp theo. Tiếp theo trong trường hợp này trông giống như một từ khóa Ruby được bảo lưu. Mã này làm gì?

+0

tiếp theo làm cho vòng lặp để ngăn chặn sự lặp hiện tại và chuyển sang tiếp theo, nhưng tôi không biết những gì băm sau khi nghĩa của nó. – Dani

+0

Bạn có thể hiển thị thêm mã không? – kiamlaluno

Trả lời

14

tiếp theo tương tự như từ khóa tiếp tục trong họ c ngôn ngữ, ngoại trừ trong ruby ​​nó làm cho một iterator di chuyển đến lần lặp tiếp theo. Vì các khối luôn luôn có một số loại giá trị trả lại, bạn có thể chọn để chuyển một giá trị như một đối số cho tiếp theo.

tiếp theo thường được sử dụng trong các trường hợp như lặp qua danh sách tệp và thực hiện hành động (hoặc không) tùy thuộc vào tên tệp.

tiếp theo có thể lấy một giá trị, đây sẽ là giá trị được trả lại cho lần lặp hiện tại của khối.

sizes = [0,1,2,3,4].map do |n| 
    next("big") if n > 2 
    puts "Small number detected!" 
    "small" 
    end 

    p sizes 

Output: 

    Small number detected! 
    Small number detected! 
    Small number detected! 
    ["small", "small", "small", "big", "big"] 

từ http://ruby-doc.org/docs/keywords/1.9/

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