Rust 初学者编程/基础数学测试程序/检查数字
外观
< Rust 初学者编程 | 基础数学测试程序
现在,我们希望验证用户输入的数字是否等于两个数字运算后的结果。首先,让我们计算一下这个数字。为此,将两个数字和运算符作为结构体的一部分是有意义的,因为这三个值经常一起使用,将它们放在一起会很方便,这样我们就可以在结构体上定义函数,以使代码更清晰。让我们像这样定义结构体
struct MathsQuestion { left: i32, right: i32, operator: Operator, }
结构体通常情况下,定义一个 new() 函数来方便构造结构体会很方便。我们可以这样做
impl MathsQuestion { fn new(left: i32, right: i32, operator: Operator) -> MathsQuestion { MathsQuestion { left, right, operator, } } }
注意,由于变量的名称与结构体中字段的名称相同,因此我们不需要写出
left: left, right: right, operator: operator,
这是一个很好的便利。此外,我们使用的是隐式返回,没有分号,因此我们不需要写 return。
现在,我们可以将我们的 print_question() 函数更改为该新结构体上的方法,因此我们在 impl MathsQuestion {} 块中添加以下函数
fn print(&self) { println!("What is {} {} {}?", self.left, self.operator, self.right); }
现在,我们可以在 MathsQuestion 结构体上编写一个函数来计算结果,这个函数也位于 impl MathsQuestion {} 块中
fn calc_result(&self) -> i32 { match self.operator { Operator::Addition => self.left + self.right, Operator::Subtraction => self.left - self.right, } }
现在,我们可以将我们的 main() 函数更改为
fn main() { let question = MathsQuestion::new(35, 23, Operator::Subtraction); question.print(); let val = wait_for_input(); let result = question.calc_result(); if val == result { println!("You got it correct! Well done!"); } else { println!("Incorrect! The correct answer was {}", result); } }
现在它可以工作了!如果我们输入 12(即 35 - 23),我们得到正确的消息,如果我们输入任何其他数字,我们得到错误的消息!