我可以像这样声明多个常量:
let (a, b, c) = (1, 0.0, 3);
但为什么我不能用可变变量来做这件事呢?
let mut (a, b, c) = (1, 0.0, 3);
抛出编译错误:
error: expected identifier, found `(`
--> <anon>:2:13
2 |> let mut (a, b, c) = (1, 0.0, 3);
|> ^
答案 0 :(得分:21)
正确的语法是
let (mut a, mut b, mut c) = (1, 0.0, 3);
Mutability是绑定的属性,a
,b
和c
都是不同的绑定,在模式匹配后,每个绑定都绑定到元组的特定元素。因此,它们可以单独变得可变。
如果您想指定类型,您也可以这样做:
let (mut a, mut b, mut c): (u8, f32, i32) = (1, 0.0, 3);
对于数字文字,您还可以使用后缀形式:
let (mut a, mut b, mut c) = (1u8, 0.0f32, 3i32);
当然,没有理由为示例代码执行此操作;只有3个单独的陈述就更容易了。
声明多个常量
这些不是常数,它们只是不可变的变量。 const
是一个不同的概念。