Tương đương với những người tiếp tục trên mạng trong Ruby


648

Trong C và nhiều ngôn ngữ khác, có một continuetừ khóa mà khi được sử dụng bên trong một vòng lặp, sẽ chuyển sang lần lặp tiếp theo của vòng lặp. Có bất kỳ tương đương với continuetừ khóa này trong Ruby?


4
tiếp tục không "khởi động lại" các vòng lặp mà nhảy sang lần lặp tiếp theo của vòng lặp.
Matt Crinklaw-Vogt

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.
Mark Szymanski

7
@dbr bản sao bạn tìm thấy đã được hỏi sau cái này.
Dropogans

Câu trả lời:


933

Vâng, nó được gọi là next.

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

Điều này xuất 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 

13
Đây là cách tôi nhớ - Ruby tôn trọng Perl ( next) trên C ( continue)
Đại tá Panic

111

next

Ngoài ra, hãy xem cái redonào làm lại lần lặp hiện tại .


39
... gây ra ruby ​​là rad như thế.
walters matt

1
Ruby đã mượn rất nhiều từ Perl, bao gồm cả redolệnh của Perl (hoặc bản chất của nó, dù sao đi nữa). Đối với giải thích của Ruby, tìm kiếm "làm lại" trong trang này .
MarkDBlackwell


42

Bên cho-vòng và phương pháp lặp như eachmapcác nexttừ khóa 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ư continuetrong C).

Tuy nhiên, những gì nó thực sự làm chỉ là 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ó một khối - ngay cả khi nó không liên quan gì đến phép lặp.


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



1

Sử dụng tiếp theo, nó sẽ bỏ qua điều kiện đó và phần còn lại của mã sẽ hoạt động. Dưới đây tôi đã cung cấp kịch bản đầy đủ và đặt ra

class TestBreak
  puts " Enter the nmber"
  no= gets.to_i
  for i in 1..no
    if(i==5)
      next
    else 
      puts i
    end
  end
end

obj=TestBreak.new()

Đầu ra: Nhập số 10

1 2 3 4 6 7 8 9 10

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.