Giả sử tôi có mã C bên dướilàm thế nào để bỏ qua một vài lần lặp trong một vòng lặp trong Ruby?
for(i = 0; i < 10; i++){
printf("Hello");
if(i == 5){
a[3] = a[2] * 2;
if(a[3] == b)
i = a[3]; //Skip to index = a[3]; depends on runtime value
}
}
Làm thế nào để chuyển đổi sang Ruby? Tôi biết chúng ta có thể bỏ qua một lần lặp bằng cách sử dụng next
, nhưng tôi phải bỏ qua một vài lần lặp lại tùy thuộc vào giá trị có điều kiện và tôi không biết có bao nhiêu lần lặp để bỏ qua trước khi chạy?
Đây là mã tôi đang thực sự làm việc trên (như đã đề cập bởi Coreyward):
Tôi đang tìm kiếm "đường thẳng" trong mảng các giá trị khác ít hơn 0.1 (ít hơn 0.1 sẽ được coi là "đường thẳng"). Phạm vi phải dài hơn 50 được coi là một "dòng" dài. Sau khi tôi tìm thấy phạm vi dòng [a, b], tôi muốn bỏ qua các lần lặp đến giới hạn trên b để nó không bắt đầu lại từ +1, và nó sẽ bắt đầu tìm "đường thẳng" mới từ b + 1
for(i=0; i<arr.Length; i++){
if(arr[i] - arr[i + 50] < 0.1){
m = i; //m is the starting point
for(j=i; j<arr.Length; j++){ //this loop makes sure all values differs less than 0.1
if(arr[i] - arr[j] < 0.1){
n = j;
}else{
break;
}
}
if(n - m > 50){ //Found a line with range greater than 50, and store the starting point to line array
line[i] = m
}
i = n //Start new search from n
}
}
Nó sẽ là nhiều hơn nữa hữu ích nếu bạn cung cấp mục đích của những gì bạn đang cố gắng để đạt được. Có một số phương thức khá tiện dụng trong lớp Enumerator cho phép bạn thiết lập giá trị cho lần lặp tiếp theo ('feed') và xem giá trị tiếp theo (' peek'), và bạn cũng có thể sử dụng vòng lặp 'for' trong Ruby. Tôi chắc chắn có một cách viết sạch hơn này, tôi chỉ không biết nó đang cố gắng làm gì. – coreyward
Bạn sẽ lập chỉ mục ở cuối mảng của bạn trong C, có thể muốn thay đổi giới hạn thành 'arr.Length-50'. Điều này có vẻ giống như một cách hơi phức tạp để tìm chạy của 50 hoặc nhiều hơn có giá trị là với epsilon của giá trị ban đầu. – dbenhur
Bạn dường như giả định giá trị ở chỉ mục lớn hơn không bao giờ nhỏ hơn giá trị ở chỉ mục thấp hơn. Điều này có đúng không? – dbenhur