流程控制
分支控制
if (条件表达式){
执行代码块
}
if (条件表达式){
执行代码块
}else{
执行代码块
}
分支语句的返回值
Scala中if else表达式其实是有返回值的,具体返回值取决于满足条件的代码体的最后一行内容。如果多个判断条件下返回值类型不一致,取它们共同的祖先类型
var s : String =if (age <18) {
"未成年"
}else{
"成年人"
}
print(s)
三元运算符号的实现
Scala可以使用if else实现Java中的三元运算符,其实质依旧是省略再省略
val res : String = if (age<18) "童年" else "成年"
循环控制
Scala为for循环提供了非常多的特性,这些for循环的特性被称为for推导式或者for表达式
范围数据循环
def main(args: Array[String]): Unit = {
// range集合类=》范围的集合 1 to 3
for (i: Int <- 1 to 3) {
println(i)
}
println("--------")
// 如果能推断出数据的类型,那么变量的类型可以省略,类似于java中的增强for循环
for (i <- 1 to 3) {
println(i)
}
println("--------")
// 1 until 3 表示1,2
for (i <- 1 until (3)) {
println(i)
}
println("--------")
// 循环步长
for (i <- 1 to 10 by 2){
println(i)
}
println("--------")
// 只会打印1,3
val list = new Range(1,5,2)
for (i <- list){
println(i)
}
println("--------")
// 循环守卫
for (i <- 1 to 3 if i !=2){
println(i)
}
println("--------")
// 反转输出
for (i <- list reverse){
println(i)
}
}
println("--------")
while 和 do...while
while (循环条件){
循环体
}
- while语句没有返回值,或者说只有unit类型的返回值
- while是先判断再执行
- 由于while,没有返回值,所以需要利用该语句来计算并返回结果时,不可避免的使用了变量,而变量需要声明再while循环的外部,那么等同于循环的内部对外部造成了影响,这违背了函数式编程的重要思想**(输入=>函数=>输出,不对外界造成影响)**所以推荐使用for循环。
do {
循环体
}while (循环条件)
循环的中断
scala中没有break和continue,所以为了更好的适应函数式编程,推荐使用breakable控制结构来实现break和continue功能
// break的实现
println("--------")
Breaks.breakable{
for (i <- 1 to 10){
println(i)
if (i==3){
Breaks.break()
}
}
}
// continue的实现,使用if就可以实现了
for (i <- 1 to 10){
if (i!=3){
println(i)
}else{
}
}