2010-07-04 48 views
10

Tôi không thể tìm thấy bất kỳ tài nguyên hữu ích trực tuyến nào phá vỡ các tùy chọn điều khiển luồng khác nhau của Ruby.Kiểm soát dòng Ruby

Giả sử rằng tôi đang lặp lại trên một mảng trong trong một phương pháp:

def a_method 
    things.each do |t| 
     # control options? 
    end 
end 

tùy chọn điều khiển luồng khác nhau của tôi là gì đây? Chúng khác nhau như thế nào?

  1. retry
  2. trở
  3. nghỉ
  4. tiếp theo
  5. redo

Trả lời

16

retry có thể được sử dụng bên trong một khối giải cứu, nhảy trở lại vào khối bắt đầu sau khi các điều kiện gây ra ngoại lệ đã được khắc phục. Bên trong một khối nó có tác dụng nhảy vào đầu của phương pháp năng suất. Vì vậy, bên trong mỗi điều này có nghĩa là thử lại sẽ nhảy đến đầu vòng lặp.

return sẽ trở về từ phương thức bên trong - trong trường hợp này là a_method.

break sẽ trở lại từ phương pháp năng suất - trong trường hợp này từ each (đó sẽ là khác nhau từ trở về từ a_method nếu có điều gì xảy ra giữa phần cuối của mỗi khối và cuối a_method).

next sẽ trở về từ khối và do đó chuyển đến mục tiếp theo trong things.

redo sẽ chuyển đến đầu khối và do đó lặp lại lặp lại hiện tại.

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