测试一
//这是一个对于以下几个模块的测试
// - 变量
// - 函数
// 玛丽正在买苹果。一个苹果一般卖2块,但是如果你一次性买超过40个,每个苹果只要一块!
//写一个函数来根据购买数量求所需资金,这次没有提示!
// 请把你的函数写在下面!
// fn ..... {
没有提示
题解
这是一道应用题,使用的是之前三章的内容,可以先画个简单的流程图来理解一下题目的意图,作为一个应用题苦手,我觉得老老实实画个简单的流程图来实现是非常方便的。
所以按照图写就行了。
接下来就是怎么实现的问题,实现抓住两点,我的输入输出是什么,我的数据处理的步骤是什么,首先输入的是数量,输出的是价格,这两个都是i32
类型可以承担的范围,所以我们先把函数的声明部分完成:
fn calculate_apple_price(amount:i32) -> i32{
}
这个时候我们会看到在大括号上会有报错,
]
这个是因为它要求必须要定义一个返回值,但我们并没有返回值存在因此,我们需要对其补全。我们所面对的返回值是价格,所以我们先定义一个可变变量total_price,然后把他作为返回的内容。
这样一来输入输出就完成了,将关注点转移到流程上来。从流程上来说,这是个if的选择流。
fn calculate_apple_price(amount:i32) -> i32{
let mut total_price = 0;
total_price = if amount > 40 {amount * 1} else { amount * 2 };
total_price
}
但是这样超级不优雅,很难受,宝宝很不喜欢。
const COMON_PIRZE:i32 = 2;
const DISCOUNT_PRIZE:i32 = 1;
fn calculate_apple_price(amount:i32) -> i32{
if amount > 40 {amount * 1} else { amount * 2 }
}
现在舒服了,首先rust提供了常量这个特殊的类型,自然要用,其次,rust可以直接返回必要的计算式的直接结果,我没有额外增加一个变量的意义,这样看起来就舒服很多了。
个人博客在这里,如果排版有问题请直接访问我的博客