字符串与Rust中的选项匹配
我尝试将输入与可能的类型匹配,然后将该字符串值转换为数字。我有这样的想法:字符串与Rust中的选项匹配,rust,Rust,我尝试将输入与可能的类型匹配,然后将该字符串值转换为数字。我有这样的想法: fn letter_to_num(nameNum: &str) -> Option<f32> { match nameNum { Some(num) => { "One" => 1.0, "Two" => 2.0, "Three&qu
fn letter_to_num(nameNum: &str) -> Option<f32> {
match nameNum {
Some(num) => {
"One" => 1.0,
"Two" => 2.0,
"Three" => 3.0
},
None => println!("Invalid Number"),
}
}
首先,您在&str上进行匹配,而不是选项,所以您的代码应该更像这样
fn letter_to_num(nameNum: &str) -> Option<f32> {
match nameNum {
"One" => Some(1.0),
"Two" => Some(2.0),
"Three" => Some(3.0),
_ => None // or panic!("message")
}
}
这里的要点是:
您需要匹配on&str值和返回选项,而不是匹配on选项
您需要从函数Some或None或panic返回正确的值。普林顿!既不恐慌也不返回正确的类型值。由于好奇恐慌从技术上讲永远不会返回调用方,所以它们会中断程序的执行
当匹配时,您需要指定一组穷尽的匹配,像u这样的通配符就可以了。它基本上说-匹配这里的所有内容。所以你把它放在最后。你可以在这里使用一个变量,比如a,比如a=>panic!无效值{},为
只是一些一般性的评论:
当比较输入考虑大写字母和小写字母时,你可以通过将输入转换为小写,然后进行匹配来实现这一点,当然,除非你只考虑大写单词作为正确的单词。
首先,您在&str上进行匹配,而不是选项,所以您的代码应该更像这样
fn letter_to_num(nameNum: &str) -> Option<f32> {
match nameNum {
"One" => Some(1.0),
"Two" => Some(2.0),
"Three" => Some(3.0),
_ => None // or panic!("message")
}
}
这里的要点是:
您需要匹配on&str值和返回选项,而不是匹配on选项
您需要从函数Some或None或panic返回正确的值。普林顿!既不恐慌也不返回正确的类型值。由于好奇恐慌从技术上讲永远不会返回调用方,所以它们会中断程序的执行
当匹配时,您需要指定一组穷尽的匹配,像u这样的通配符就可以了。它基本上说-匹配这里的所有内容。所以你把它放在最后。你可以在这里使用一个变量,比如a,比如a=>panic!无效值{},为
只是一些一般性的评论:
当比较输入考虑大写字母和小写字母时,你可以通过将输入转换为小写,然后进行匹配来实现这一点,当然,除非你只考虑大写单词作为正确的单词。
输入是&str,而不是选项,因此Somenum与nameNum的模式不匹配。它还应该重命名为name_num,否则您将收到警告。
由于要返回不匹配字符串的错误消息,可以使用Result
在上测试上述代码。输入是&str,而不是Option,因此Somenum与nameNum的模式不匹配。它还应该重命名为name_num,否则您将收到警告。
由于要返回不匹配字符串的错误消息,可以使用Result
在上测试上述代码