rust 匹配表达式

68 阅读1分钟

Rust 模式匹配简介

模式匹配是 Rust 中一种强大的功能,用于从表达式中提取值。expand_more它类似于其他语言中的 switch 语句,但功能更强大且更灵活。expand_more

模式匹配的基本语法如下:

Rust

match expression {
    pattern1 => expression1
    pattern2 => expression2
    ...
    _ => expression_default
}

谨慎使用代码。

content_copy

其中:

  • expression 是要匹配的表达式。
  • pattern1pattern2 等是模式。
  • expression1expression2 等是与相应模式匹配成功时执行的表达式。
  • _ 是默认模式,用于匹配所有其他情况。

模式可以很簡單,也可以很复杂。它们可以匹配基本值、复合值、甚至函数调用。

以下是一些模式匹配的示例:

匹配基本值

Rust

let x = 5;

match x {
    1 => println!("x is 1"),
    2 => println!("x is 2"),
    _ => println!("x is something else"),
}

谨慎使用代码。

content_copy

此代码将打印 x is 5,因为 x 的值与模式 5 匹配。

匹配复合值

Rust

let point = (10, 20);

match point {
    (x, y) => println!("x is {}, y is {}", x, y),
}

谨慎使用代码。

content_copy

此代码将打印 x is 10, y is 20,因为 point 的值与模式 (x, y) 匹配。模式 (x, y)point 解构为两个变量 xy

匹配函数调用

Rust

let s = "hello";

match s.len() {
    0 => println!("s is empty"),
    5 => println!("s has 5 characters"),
    _ => println!("s has {} characters", s.len()),
}

谨慎使用代码。

content_copy

此代码将打印 s has 5 characters,因为 s.len() 的值与模式 5 匹配。模式 5 匹配函数调用的返回值。