学习新时代编程语言Rust-6练习优化计算程序

       上一期我们留了个练习题,我们一起做一下:打开命令终端,使用 cargo new learn-if 创建一个 learn-if 项目,进入 learn-if 文件夹,使用文本编辑器打开 main.rs 文件,输入双斜杠注释掉 Cargo 帮我们生成的 Hello World 代码,声明一个变量num 并赋值为 30 。接下来创建一个 if 表达式,如果 num大于 100 我们使用 println! 输出“这个数字太大了”,再如果 num 小于 50 ,输出“这个数字太小了”, 不大于 100 又不小于 50 的情况我们可以使用 else 输出“这个数字刚好合适”。

main.rs

        有没有发现我们在声明 num 变量时并没有使用冒号声明变量类型,这是因为 Rust 可以根据后面的数字 30 帮我们推导出这是一个整数并使用默认的 i32 类型。Rust 中的这种类型推导机制可以在一定程度上帮我们免去必须声明变量类型的麻烦。为什么是一定程度呢?因为在有些场景下Rust 也不能帮我们推导出变量类型,还需要我们自己声明变量类型。

  编写好后保存退出,使用 cargo run 命令编译并执行,由于我们当前 num 的值为 30 所以程序输出了“这个数字太小了“

cargo run

         你也可以把 num 的值分别设置成1000,80 试下... .

         在尝试过程中如果遇到问题欢迎通过平台给我们留言!

         学习了字符基本类型,布尔基本类型和 if 表达式,我们就可以开始动手改造我们的计算程序了。切换到上一期的 hello-rust 项目目录,使用文本编辑器打开 main.rs 文件,使用双斜杠注释掉上一期写的计算程序代码,当然也可以直接删除掉,我们需要获取用户在命令行中输入的数字和操作符,所以我们定义一个变量 args 来保存用户在命令行中输入的参数,这里 args 的类型为向量类型,向量类型我们还没有讲到,可以简单的理解为是一个数组,里面可以存储多条数据。我们使用 env 模块的 args 方法获取用户执行程序时输入的数字和运算符,使用 collect 方法把获取到的参数转换为向量类型,由于默认情况下 Rust 并没有加载 env 模块所以要使用 env 模块里的方法需要先告诉 Rust 需要加载这个模块,怎么告诉它呢?

          我们可以使用 use 关键字在文件的头部输入 use std::env,Rust 看到这个就知道我们需要env 模块了。

use env

           接下来我们定义一个变量 number1 并从 args 里获取第 2 个值也就是下标为 1 的值,赋值给number1 变量。为什么下标是 1 而不是 0 呢? 因为在 0 的位置存储的是可执行文件的名称,也就是compute ,依次类推,我们操作符就在下标为 2 的位置, number2 就在下标为 3 的位置。获取到的命令行参数是字符串类型的,需要使用 parse 方法把它转换为我们需要的类型。这里的数字我们使用 f32 类型,运算符由于就一个字符我们就使用上一期刚认识的 char 类型。依次取出运算符和 number2 ,这里需要向大家说明下, parse 方法返回的并不是我们需要的数字而是又做了一层封装,主要是考虑用户输入的未必是数字,那程序就会抛出异常。我们先假定用户输入的一定是合法的,这里直接使用 unwrap 方法获取parse 后的数字和字符。

unwrap

   接下来就要用到我们刚认识的 if 表达式了。使用 if 判断运算符如果是加号,我们就输出 number1 加number2 的结果。使用 else if 判断运算符如果是减号我们就输出 number1 – number2 的结果,使用 else if 判断运算符如果是 * 号就输出 number1 乘以 number2 的结果,使用 else if 判断运算符如果是反斜杠就输出 number1 除以 number2 的结果。如果用户输入的操作符既不是加减也不是乘除,那我们就使用 else块告诉用户我们当前的程序只支持加减乘除运算。

if

         编写完成后保存退出,在执行编译命令前,我们还需要编辑 Cargo.toml 文件,修改 package 区域的

name 项为 compute 。

Cargo.toml

          这样生成的可执行文件的名称就是 compute 了,修改后保存退出,执行 cargo build ,执行完成后进入 target 目录的 debug 目录找到生成的可执行文件 compute

          测试下我们编写的计算程序能不能正常工作,在命令行里输入 compute 10 + 18 回车执行,控制台中输出了计算结果 10 加 18 等于 28 ,是正确的吧?

compute

         我们再计算一个难点的 , 输入 compute 18 – 20 回车执行,我们可以看到输出的计算结果 18-20 等于 -2 ,也是正确的。

         当前我们的程序还不够 Rust ,还没有使用一些 Rust 语言的特性,随着我们学习的深入我们再来优化这个计算程序。

       学习编程语言一定要动手去尝试,边学理论边动手实践这样才能掌握的更快更牢固,快动手试试吧。

相关视频请访问

Learning and Earning go together. More you learn in the school of hard knocks, the more you earn

你可能感兴趣的:(学习新时代编程语言Rust-6练习优化计算程序)