scala流程控制
1、分支控制if-else
分支控制有三种:单分支、双分支、多分支;
1.1 单分支
(1)、语法入下:
if(条件表达式){
执行代码块 //当条件表达式为true时,才会执行代码块内容
}
1.2 双分支
语法入下:
if(条件表达式){
执行代码块 //当条件表达式为true时,才会执行代码块内容
}else{
执行代码块 //当条件表达式为false时,才会执行代码块内容
}
1.3 多分支
语法入下:
if( 条件表达式1 ){
执行代码块1 //当条件表达式1 为true时,才会执行代码块1 内容
}else if( 条件表达式2 ){
执行代码块2 //当条件表达式2 为true时,才会执行代码块2 内容
}else if( 条件表达式3 ){
执行代码块3 //当条件表达式3 为true时,才会执行代码块3 内容
}else{
执行代码块4 //当条件表达式为false时,才会执行代码块4 内容
}
1.4 分支语句的返回值
val result : Unit = if(条件表达式){
执行代码块 //当条件表达式为true时,才会执行代码块内容
}else{
执行代码块 //当条件表达式为false时,才会执行代码块内容
} //结果返回() ;实际是返回代码块最后一行
实现java中的三元运算符:(关系表达式) ? 表达式1:表达式2;
scala实现:val res = if( age>18 ) "成年" else "未成年" ;
2、for循环
2.1 范围遍历
for (i <- 1 to 10){ // 底层就是对象的方法调用,相当于 for (i <- 1.to(10)) [1,10]
println(i + "次遍历") //从1到10 循环遍历
}
--------------------------------------------------------------
for (i <- 1 until 10){ // [1,10) ,也可以用 for (i <- rang(1,10) )
println(i + "次遍历") //从1到9 循环遍历
}
2.2 集合遍历
for (i <- Array(1,10,12) ){ //for (i <- Set(1,10,12,33) ) for (i <- List(1,12,33) )
println(i + "次遍历") //输出的结果为: 1次遍历 10次遍历 12次遍历
}
2.3 循环守卫(循环过滤)
Scala 可以在for循环中 使用一个或多个 if 语句来过滤一些元素
for (a <- 1 to 10 if a != 2 ; if a < 4){
println(a + "次循环") //输出的结果为 : 1次循环 3次循环
}
2.4 循环步长
注意:step 不能为0;可以为小数,但是不推荐用,可能会造成精度缺失;
2.5 倒序遍历
2.6 嵌套循环
例如:实现九九乘法表
嵌套循环的格式也可以用一下的方式:
2.7 引入变量
九层妖塔Scala单层循环实现:
2.8 for循环返回值
默认是空,即();个人理解是 因为关系表达式的值一致在变,返回值不确定是哪一个;
val ints = for (a <- 1 to 5) yield a
//使用关键字 yield ,把变量相关的值放入集合中进行返回;用于对集合中的元素进行计算处理
3、while循环
while 和do......while的使用和java语言中完全相同
3.1 while的用法
循环变量的初始化
while(循环条件)
{
循环体statement(s);
循环变量迭代;
}
3.2 do......while的用法
do {
循环体statement(s);
循环变量迭代;
} while(循环条件);
例如:
4、循环中断
scala内置控制结构特地去掉了break和continue,是为了更好的适应函数式编程。推荐使用函数式的风格解决break和continue的功能,而不是一个关键字。scala中使用breakable控制结构来实现break和continue的功能。
代码简化方式如下: