Sar*_*ner 1 variables immutability mutability rust
我有这段代码,我尝试将命令行参数转换为整数.问题是,变量width和height应该是不可变的,因为我不打算改变它们.有没有什么方法可以使用匹配let width = {match....},并在一个步骤中将它们初始化为不可变变量,而不是给它们一个默认值并改变它们?我相信这会更安全,更有效率.
let args: Vec<String> = env::args().collect();
let width_arg = &args[1];
let height_arg = &args[2];
let mut width = 0;
let mut height = 0;
match width_arg.parse::<i32>() {
Ok(w) => width = w,
Err(_) => ask_for_number(),
}
match height_arg.parse::<i32>() {
Ok(h) => height = h,
Err(_) => ask_for_number(),
}
Run Code Online (Sandbox Code Playgroud)
当然,match是一个表达式,所以你应该能够按如下方式重写它:
let args: Vec<String> = env::args().collect();
let width_arg = &args[1];
let height_arg = &args[2];
let width = match width_arg.parse::<i32>() {
Ok(w) => w,
Err(_) => ask_for_number(),
};
let height = match height_arg.parse::<i32>() {
Ok(h) => h,
Err(_) => ask_for_number(),
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |