2010-10-24 42 views
522

Trong C và nhiều ngôn ngữ khác, có một từ khóa continue, khi được sử dụng bên trong một vòng lặp, nhảy đến vòng lặp tiếp theo của vòng lặp. Có tương đương với từ khóa continue này trong Ruby không?Tương đương với "tiếp tục" trong Ruby

+3

tiếp tục không "khởi động lại" các vòng nhưng nhảy đến phiên bản kế tiếp của vòng lặp. –

+1

@mlaw: Tôi đã chỉnh sửa câu hỏi của mình cho phù hợp để tránh nhầm lẫn trong tương lai. –

+3

có thể trùng lặp của [Trong Ruby, làm thế nào để bỏ qua một vòng lặp trong một vòng lặp .each, tương tự như 'tiếp tục'] (http://stackoverflow.com/questions/4230322/in-ruby-how-do-i-skip -a-loop-in-a-each-loop-tương tự-tiếp tục) – dbr

Trả lời

772

Có, nó được gọi là next.

for i in 0..5 
    if i < 2 
    next 
    end 
    puts "Value of local variable is #{i}" 
end 

này kết quả đầu ra như sau:

Value of local variable is 2 
Value of local variable is 3 
Value of local variable is 4 
Value of local variable is 5 
=> 0..5 
+8

Đây là cách tôi nhớ - Ruby tôn trọng Perl (' next') trên C ('tiếp tục') –

36

Bên cho-vòng và phương pháp lặp như eachmap từ khóa next trong ruby ​​sẽ có tác dụng nhảy đến phiên bản kế tiếp của vòng lặp (giống như continue trong C).

Tuy nhiên những gì nó thực sự làm là chỉ để trở về từ khối hiện tại. Vì vậy, bạn có thể sử dụng nó với bất kỳ phương thức nào cần một khối - ngay cả khi nó không liên quan gì đến việc lặp lại.

+0

cũng như tuyên bố làm lại tốt đẹp – Sigurd

+5

+22 để giải thích ý nghĩa ngữ nghĩa của 'next' – Jack

89

next

cũng có, nhìn vào redo mà redoes các hiện lặp.

+33

... nguyên nhân ruby ​​là rad như thế. –

65

Viết Ian Purton's answer theo một cách hơi nhiều thành ngữ:

(1..5).each do |x| 
    next if x < 2 
    puts x 
end 

Prints:

2 
    3 
    4 
    5 
Các vấn đề liên quan