2014-11-22 34 views
2

此文檔不清楚......是否保證按順序執行match聲明中的情況?在不關心比賽的情況下,可以重疊比賽嗎?是否按順序執行匹配語句,它們可以重疊嗎?

let a: bool; 
let b: bool; 
let c: bool; 
let d: bool; 

match (a, b, c, d) { 
    (true, _, _, _) => { /* ... */ } 
    (_, true, _, _) => { /* ... */ } 
} 

從本質上講,可以防鏽的match被用作一個奇怪的排序情況下過濾器?

回答

2

是的,保證匹配語句按順序執行。這兩個匹配是等效的:

match (a, b) { 
    (true, _) => println!("first is true !"), 
    (_, true) => println!("second is true !"), 
    (_, _) => println!("none is true !"), 
} 

match (a, b) { 
    (true, _) => println!("first is true !"), 
    (false, true) => println!("second is true !"), 
    (false, false) => println!("none is true !"), 
} 
+0

有趣的...如果你可以提供自定義匹配器,這可能會使一些非常非常奇怪的代碼。 – IdeaHat 2014-11-22 16:22:37

相關問題