2014-11-22 35 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

相关问题