前一练习中你写了一些「if 语句 (if-statements)」,并且试图猜出它们是什么,以及实现的是什么功能。在你继续学习之前,我给你解释一下上一节的加分练习的答案。上一节的加分练习你做过了吧,有没有?
- 你认为 if 对于它下一行的代码做了什么?if 语句为代码创建了一个所谓的「分支(branch)」,就跟 RPG游戏中的情节分支一样。if 语句告诉你的脚本:「如果这个布尔表示式为真,就执行接下来的代码,否则就跳过这一段。」
- 把练习29中的其它布尔表示式放到 if 语句中会不会也可以执行呢?试一下。可以。而且不管多复杂都可以,虽然写复杂的东西通常是一种不好的写作风格。
- 如果把变数 people、cats和 dogs 的初始值改掉,会发生什么事情?因为你比较的对象是数字,如果你把这些数字改掉的话,某些位置的 if 语句会被演绎为 True,而它下面的代码块将被运行。你可以试着修改这些数字,然后在头脑里假想一下那一段代码会被运行。
把我的答案和你的答案比较一下,确认自己真正懂得代码「块(block)」的含义。这点对于你下一节的练习习很重要,因为你将会写很多的if 语句。
把这一段写下来,并让它运行起来:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<span class="nv">people</span> <span class="o">=</span> 30 <span class="nv">cars</span> <span class="o">=</span> 40 <span class="nv">buses</span> <span class="o">=</span> 15 <span class="k">if</span> cars > people puts <span class="s2">"We should take the cars."</span> elsif cars < people puts <span class="s2">"We should not take the cars."</span> <span class="k">else</span> puts <span class="s2">"We can't decide."</span> end <span class="k">if</span> buses > cars puts <span class="s2">"That's too many buses."</span> elsif buses < cars puts <span class="s2">"Maybe we could take the buses."</span> <span class="k">else</span> puts <span class="s2">"We still can't decide."</span> end <span class="k">if</span> people > buses puts <span class="s2">"Alright, let's just take the buses."</span> <span class="k">else</span> puts <span class="s2">"Fine, let's stay home then."</span> end |
