2014-04-07 19 views
13

Có cách nào để lồng các vòng for lồng vào Rust và phá vỡ vòng lặp bên ngoài từ bên trong bên trong, cách có thể thực hiện ví dụ: trong Java? Tôi biết Rust hỗ trợ có tên là vi phạm ở số loop nhưng tôi dường như không thể tìm thấy thông tin về cùng một số liên quan đến for.Các ngắt được đặt tên cho các vòng trong Rust

+0

Không chính xác những gì bạn đang tìm kiếm, nhưng bạn luôn có thể 'quay lại' từ bên trong vòng lặp trong cùng. – ZunTzu

+0

Cảm ơn bạn. Đó không thực sự là những gì tôi cần, tuy nhiên, vì vậy tôi có lẽ sẽ tổ chức lại mã. –

Trả lời

27

Có. Nó sử dụng cú pháp giống như thời gian sống.

fn main() { 
    'outer: for x in range(0u, 5) { 
     'inner: for y in range(0u, 5) { 
      println!("{},{}", x, y); 
      if y == 3 { 
       break 'outer; 
      } 
     } 
    } 
} 

Xem loop labels documentation.

+0

Cảm ơn bạn. Đây chính xác là những gì tôi đang tìm kiếm (mặc dù tôi không thể tìm thấy nó trong sách hướng dẫn chính thức, ít nhất là cho v0.9). –

+2

@NoeticJun Nó được đề cập trong phần [Vòng lặp vô hạn] (http://static.rust-lang.org/doc/0.9/rust.html#infinite-loops) (theo sau là biểu thức Break). Mặc dù có một chút khó hiểu, vì ngắt ví dụ là 'break foo' thay vì' break 'foo'. Nó cũng sử dụng cả "nhãn" và "suốt đời" để chỉ cùng một thứ. Nó sẽ được viết lại. –

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