条件和循环语句,在编程语言中非常常见,熟悉任何一门编程语言的朋友,相信对这两种语句都不陌生。我们在这里重点看下Scala中的条件和循环语句特殊的地方及其使用方式。
条件语句
Scala中的条件语句同样可以有以下几种形式:
if(){}
if() {}else{}
if(){} else if(){} else{}
我们来重点看下Scala中条件语句与其它语言不同的地方:
1条件语句都有返回值,可以使用变量接收
scala> val age=15
age: Int = 15
scala> val result=if(age<18){
| "young"
| }else{
| "older"
| }
result: String = young
2条件表达式的返回值,由每一个分支最后一行的值来决定的
scala> val a=5
a: Int = 5
scala> val result=if(a>5){
| a
| }else{
| "hello"
| }
result: Any = hello
3如果缺少else分支,相当于else分支返回(),类型是Unit
scala> val result=if(a>5){
| a
| }
result: AnyVal = ()
4如果各个分支的返回值类型不一致,默认使用父类的类型(就近原则)。见例2。
5如果分支语句只有一行,可以省略{},但是一般情况下,不建议省略
if(a >5)
5
else
10
循环
for循环
先定义一个整型数组,后面的示例都以此数组为例:
val nums = Array[Int](1, 2, 3, 4, 5, 6)
1. 增强for循环
for (n <- nums) {
println(n)
}
2. 普通for循环
Scala中的生成器有2个,一个是to,一个是until。to生成的是一个闭区间范围,until生成的是一个左闭右开的区间范围。
for (i <- 0 to nums.length - 1) {
println(i+"----"+mums(i))
}
for (i <- 0 until nums.length ) {
println(i+"----"+nums(i))
}
3. 带守卫的for循环
for循环表达式中可以直接加判断条件,称为带守卫的for循环。
for (n <- nums if (n % 2 == 0)) {
println(n)
}
while循环
while循环跟其他语言是一样的,只是Scala中没有break和continue关键字。
var i = 0
var flag = true
while (i < 200 && flag) {
if(i == 110) flag = false
println("it is me!!! ")
i += 1
}
do…while循环是一样的,在此不再赘述。