内建控制结构之if表达式

Scala的if语句与其它语言相比没有什么不同。它可以检测条件并根据其是否为真,执行两个分支中的一个。下面是常见的以指令式风格编写的例子:

package scalaTest
object Test4 {
    def main(args:Array[String]) {
        var filename = "default.txt"
        if(!args.isEmpty) filename = args(0)
        println(filename)
    }
}

这段代码声明了变量filename,并初始化为默认值。然后使用if表达式检查程序是否带有参数。如果是,就把变量改成参数列表中定义的值,如果没有参数,就保持变量的默认值。这段代码还有优化的余地,如下例:

package scalaTest
object Test4 {
    def main(args:Array[String]) {
        val filename = if(!args.isEmpty) args(0) else "default.txt"
        println(filename)
    }
}

这一次,if有了两个分支。如果args不为空,那么选择初始化元素args(0),否则,选择默认值。这段代码的实际优点在于使用val而不是var使用val体现了函数式的风格,并且具有与java的final变量类似的效果。
使用val而不是var的第二点好处是它能更好地支持等效推论在表达式没有副作用的前提下,引入的变量等效于计算它的表达式。因此,无论何时都可以用表达式替代变量名。如下:

package scalaTest
object Test4 {
    def main(args:Array[String]) {
        println(if(!args.isEmpty) args(0) else "default.txt")
    }
}

注:尽可能寻找使用val的机会,它们能让你的代码既容易阅读又容易重构。

你可能感兴趣的:(scala)