简单记一次模式匹配与模式绑定的小想法

简单记一次模式匹配与模式绑定的小想法
Mus在看 Rust 语言圣经的 模式适用场景 - Rust语言圣经(Rust Course) 时,其中提到
1 let x = 5;这其中,
x也是一种模式绑定,代表将匹配的值绑定到变量 x 上。因此,在 Rust 中,变量名也是一种模式,只不过它比较朴素很不起眼罢了。
1 let (x, y, z) = (1, 2, 3);上面将一个元组与模式进行匹配(模式和值的类型必需相同!),然后把
1, 2, 3分别绑定到x, y, z上。
在看到 let (x, y, z) = (1, 2, 3); 语句时我突然感觉模式匹配与模式绑定可以这样理解:这里的 (x, y, z) 是一种模式,它与值 (1, 2, 3) 匹配(因为此时值也是一个元组),这个过程称为模式匹配,然后又因为它们是匹配的,从而可以把 1 2 3 分别绑定到 x y z 上,这个过程称之为模式绑定。
那么对于常见的诸如 let x = 5; 这类的语句就可以这样理解:因为在 Rust 中所有变量名也是一种模式,那么它与值 5 匹配,又因为它们是匹配的,所以可以把 5 绑定到变量 x 上,x 拥有 5 的所有权。
所有权?是不是很惊喜,这与前面我们学习的所有权对应上了,这就是为什么 Rust 的这类语句要叫绑定而非赋值了。
评论
匿名评论隐私政策



