MrS*_*ock 13 string reference rust
我正在尝试String
根据参数的数量分配变量值(类型):
let mut out_filename = "";
let args: Vec<_> = env::args().collect();
match args.len() {
2 => out_filename = args[1],
3 => out_filename = args[2],
_ => panic!("To many params !"),
};
Run Code Online (Sandbox Code Playgroud)
我得到
let mut out_filename = "";
let args: Vec<_> = env::args().collect();
match args.len() {
2 => out_filename = args[1],
3 => out_filename = args[2],
_ => panic!("To many params !"),
};
Run Code Online (Sandbox Code Playgroud)
如何制作匹配值(1,2,3)只是一个选择器并且返回类型不同的匹配语句?没有let var = match
..
您out_filename
使用字符串文字进行了初始化。字符串文字的类型是&str
(或更具体地说,&'static str
),它不同于String
。
最简单的解决方案是直接赋值out_filename
给match
表达式的结果:
use std::env;
fn main() {
let args: Vec<_> = env::args().collect();
let out_filename = match args.len() {
2 => &args[1],
3 => &args[2],
_ => panic!("Too many params !"),
};
}
Run Code Online (Sandbox Code Playgroud)
[...] 如果我想根据内部代码块 {} 的 args 计数进行一组分配怎么办?[...] 有没有办法在没有
let var = match {
分配的情况下获得基本匹配的工作代码?
您可以简单地let
在match
表达式之前放置一些没有初始化器的语句,并在每个分支中适当地初始化变量。如果您尝试使用可能未定义的变量,则会出现编译器错误,除非您使用 定义变量,否则let mut
如果您尝试在特定代码路径上多次分配变量,也会出现错误.
use std::env;
fn main() {
let args: Vec<_> = env::args().collect();
let out_filename;
match args.len() {
2 => out_filename = &args[1],
3 => out_filename = &args[2],
_ => panic!("Too many params !"),
};
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14612 次 |
最近记录: |