Julia 中的比较运算符与许多其他语言相似,不过为数学爱好者多准备了一些选项。
判断相等时,运算符有==(等于)和!=或≠(不等于)。
txt = "abc"
txt == "abc" # true
txt != "abc" # false
txt ≠ "abc" # false (synonym for !=)
除此之外,还有各种大于/小于运算符。
1 < 3 # true
3 > 3 # false
3 <= 3 # true
3 ≤ 3 # true (synonym for <=)
4 >= 3 # true
4 ≥ 3 # true (synonym for >=)
和 Julia 的一贯风格一样,合适的编辑器能让你轻松输入这些数学符号。输入\ne、\le或\ge,然后按TAB,就能得到≠、≤或≥。
上一个例子只用了数字,但在教学大纲的其他部分我们会看到,各种其他类型也有大小顺序的概念,可以进行大于/小于比较。
比较运算符可以串联使用,从而实现简洁明了的语法:
n = 3
1 ≤ n ≤ 5 # true (n "between" two limits)
上一个例子等同于1 ≤ n && n ≤ 5。
if分支下面是if语句的完整形式:
if conditional1
statements...
elseif conditional2
statements...
else
statements...
end
不需要圆括号()或大括号{},缩进“仅仅”是为了提高可读性_(但可读性非常重要!)_。
elseif和else都是可选的,并且可以有多个elseif分支。不过,end是必需的。
if语句可以嵌套,不过你也许想通过合理使用括号、缩进和注释来帮助提高可读性。
if语句最短的形式大概是这样:
if n < 0
n = 0
end
提醒一下:只有求值为true或false的表达式才能用作条件。Julia 有意避开了“真值性”这一概念,所以零值、空字符串和空数组_不_等同于false。
一种简单而常见的情形是:根据条件在两个值中取一个。
和许多语言一样,Julia 提供了三元运算符,让这件事更简洁。
语法是conditional ? value_if_true : value_if_false。
所以上一个例子可以改写成:
n = n < 0 ? 0 : n
编译器并不要求加括号,但加上括号可以提高可读性。
在这个练习中,你将编写代码来分析汽车工厂装配线的生产情况。
装配线的速度范围从 0(关闭)到 10(最大)。
在最低速度(1)时,每小时生产 221 辆汽车。
产量随速度线性增长。
因此速度设为 4 时,每小时应生产 4 * 221 = 884 辆汽车。
不过,速度越高,生产出有缺陷汽车的可能性就越大,而这些次品只能被丢弃。
你一共有三个任务。 每个需要实现的函数都接收一个整数形参,即装配线的速度。
实现 success_rate() 方法,计算给定速度下生产出无错误产品的概率。
下表展示了速度如何影响成功率:
0:0% 成功率。1到4:100% 成功率。5到8:90% 成功率。9:80% 成功率。10:77% 成功率。julia> success_rate(10)
0.77
实现 production_rate_per_hour() 方法,计算装配线每小时的生产率,并考虑其成功率。
julia> production_rate_per_hour(6)
1193.4
注意,返回的值是浮点数。
实现 working_items_per_minute() 方法,计算每分钟生产多少辆合格汽车:
julia> working_items_per_minute(6)
19
注意,返回的值是整数:不完整的产品不计入其中。