第5步 用while做循环;用if做判断
我们先来试试while,将以下内容录入名为printargs.scala的文件中:
注意
尽管本节的实例介绍了while循环,它们并非是最佳的Scala风格。在下一节,你将看到比用下标遍历数组更好的方式。
这个脚本从变量定义开始:var i = 0。类型推断将i判定为scala.Int,因为这是初始值0的类型。下一行的while语法结构使得代码块(即花括号中间的部分)被不断地重复执行,直到boolean表达式i < args.length的值为false。其中args.length给出的是数组args的长度。代码块包含了两个语句,各缩进2个空格(这是Scala推荐的缩进风格)。其中第一个语句println(args(i))打印出第i个命令行参数。而第二个语句i += 1让变量i自增1。注意Java的++i和i++在Scala中并不工作。要想在Scala中让变量自增,要么用i = i + 1,要么用i += 1。用下面的命令执行这个脚本:
应该会看到:
要玩得再尽兴一点,可以将下面的代码录入名为echoargs.scala的文件中:
在这个版本当中,将println调用替换成了print,因此命令行参数会在同一行输出。为了让输出变得更可读,可通过if (i! = 0)语句,在除了首个参数之外的每个参数之前都加上了一个空格。由于i != 0在首次执行while循环体时为false,所以在首个参数之前不会打印空格。最后,在末尾添加了另一个println,这是为了在所有参数都打印出来之后追加一个换行。至此你的输出应该非常漂亮了。如果用如下命令执行这个脚本:
将会看到:
注意,在Scala中(这一点跟Java一样),while或if语句中的boolean表达式必须放在圆括号里(也就是说,不能像Ruby那样写if i < 0,而是必须写成if (i < 0))。另一个跟Java类似的地方是如果if代码块只有单一声明,可以选择不写花括号,就像echoargs.scala中的if语句所展示的那样。尽管你还没看到过我们在代码中使用分号,Scala跟Java一样,也支持用分号来分隔语句,只不过Scala的分号通常不是必需的,因而你的右手小指会轻松一些吧。如果你不嫌啰唆,完全可以将echoargs.scala写成下面的样子: