Rust編程進階:056、模式

1、模式是Rust中特殊的語法,模式用來匹配值的結構。
2、模式由如下內容組成:
(1)字面值
(2)解構的數組、枚舉、結構體或者元組
(3)變量
(4)通配符
(5)佔位符
例子:

// 1、match
// match VALUE {
//     PATTERN => EXPRESSION,
//     PATTERN => EXPRESSION,
//     PATTERN => EXPRESSION,
// }
// 必須匹配完所有的情況
// fn main() {
//     let a = 1;
//     match a {
//         0 => println!("Zero"),
//         1 => println!("One"),
//         _ => println!("other"),
//     };
//     println!("Hello, world!");
// }

// if let
// fn main() {
//     let color: Option<&str> = None;
//     let is_ok = true;
//     let age: Result<u8, _> = "33".parse();

//     if let Some(c) = color {
//         println!("color: {}", c);
//     } else if is_ok {
//         println!("is ok");
//     } else if let Ok(a) = age {
//         if a > 30 {
//             println!("oh, mature man");
//         } else {
//             println!("oh, young man");
//         }
//     } else {
//         println!("in else");
//     }
// }

// while let
// 只要模式匹配就一直執行while循環
// fn main() {
//     let mut stack = Vec::new();
//     stack.push(1);
//     stack.push(2);
//     stack.push(3);
//
//     while let Some(top) = stack.pop() {
//         println!("top = {}", top);
//     } // 只要匹配Some(value),就會一直循環
// }

// for
// // 在for循環中,模式是直接跟隨for關鍵字的值,例如 for x in y,x就是對應的模式
// fn main() {
//     let v = vec!['a', 'b', 'c'];
//     for (index, value) in v.iter().enumerate() {
//         println!("index: {}, value: {}", index, value);
//     }
// }
// 此處的模式是(index, value)

// let
// let PATTERN = EXPRESSION
// fn main() {
//     let (x, y, z) = (1, 2, 3); // (1, 2, 3)會匹配(x, y, z),將1綁定到x,2綁定到y,3綁定到z
//     println!("{}, {}, {}", x, y, z);
//
//     let (x, .., z) = (1, 2, 3);
//     println!("{}, {}", x, z);
// }

// 函數
// 函數的參數也是模式
fn print_point(&(x, y): &(i32, i32)) {
    println!("x: {}, y: {}", x, y);
}

fn main() {
    let p = (3, 5);
    print_point(&p);
}
// &(3, 5) 匹配模式 &(x, y)

// 模式在使用它的地方並不都是相同的,模式存在不可反駁的和可反駁的

本節全部源代碼:
https://github.com/anonymousGiga/learn_rust/blob/master/learn_pattern/src/main.rs

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章