可以使用@以下方式将值绑定到名称:
struct Badger { pub age: u8 } fn main() { // 让我们创建一个Badger实例 let badger_john = Badger { age: 8 }; // 现在,根据他的年龄,找出约翰最喜欢的活动是什么 match badger_john.age { // 我们可以将值范围绑定到变量并在匹配的分支中使用它们 baby_age @ 0...1 => println!("John is {} years old, he sleeps a lot", baby_age), young_age @ 2...4 => println!("John is {} years old, he plays all day", young_age), adult_age @ 5...10 => println!("John is {} years old, he eats honey most of the time", adult_age), old_age => println!("John is {} years old, he mostly reads newspapers", old_age), } }
这将打印:
John is 8 years old, he eats honey most of the time
本文向大家介绍Rust 基本模式匹配,包括了Rust 基本模式匹配的使用技巧和注意事项,需要的朋友参考一下 示例 如果我们没有涵盖所有情况,则会出现编译器错误: 我们可以使用_默认/通配符大小写,它匹配所有内容: 此示例将打印:
本文向大家介绍Rust 与守卫的条件模式匹配,包括了Rust 与守卫的条件模式匹配的使用技巧和注意事项,需要的朋友参考一下 示例 可以根据独立于使用if防护匹配的值的值来匹配模式: 这将显示“不可用”。
间接地访问一个变量不可能在分支中使用这个没有重新绑定的变量。 match 提供了 @ 符号来绑定变量到名称: // `age` 函数,返回一个 `u32` 值。 fn age() -> u32 { 15 } fn main() { println!("Tell me type of person you are"); match age() { 0
模式,是Rust另一个强大的特性。它可以被用在let和match表达式里面。相信大家应该还记得我们在复合类型中提到的关于在let表达式中解构元组的例子,实际上这就是一个模式。 let tup = (0u8, 1u8); let (x, y) = tup; 而且我们需要知道的是,如果一个模式中出现了和当前作用域中已存在的同名的绑定,那么它会覆盖掉外部的绑定。比如: let x = 1; let c
本文向大家介绍OCaml 否定范式:深度模式匹配,包括了OCaml 否定范式:深度模式匹配的使用技巧和注意事项,需要的朋友参考一下 示例 模式匹配允许解构复杂的值,并且绝不限于值表示的“最外部”级别。为了说明这一点,我们实现了将布尔表达式转换为布尔表达式的函数,其中所有否定都仅存在于原子上,即所谓的否定范式和谓词可识别这种形式的表达式: 我们定义布尔表达式的类型,其原子由字符串标识为 让我们首先定
一、模式匹配 Scala 支持模式匹配机制,可以代替 swith 语句、执行类型检查、以及支持析构表达式等。 1.1 更好的swith Scala 不支持 swith,可以使用模式匹配 match...case 语法代替。但是 match 语句与 Java 中的 switch 有以下三点不同: Scala 中的 case 语句支持任何类型;而 Java 中 case 语句仅支持整型、枚举和字符串常