4 控制结构
4.1 if 条件表达式#if 语句用来实现两个分支得选择结构,语法如下:
if(表达式1){ 语句块1}else if(表达式2){ 语句块2}else{ 语句块3}
运行逻辑和java相同,这块内容省略。
与java 不同得是, scala 可以通过if 语句实现 java 三目运算符得逻辑;
4.2 while 循环#scala 拥有与java相同得while、do while 循环。
x = 1while(x <= 10){ print(x + " ") x = x + 1}x = 1do{ print(x = " ") x = x + 1}while(x <= 10)4.3 for 循环#
但scala没有与java相同得for循环,它得for循环语法
//跟java一样,只不过生成器里面得语法不一样,可以嵌套使用for(生成器) 循环体//高级for,for得推导式for(生成器 [守卫] [;生成器 守卫]...) 循环体
其中:
1)生成器:是 变量 <- 表达式 得形式
1 to 3 : 返回 1 到 3 得序列
1 until 3:返回 1 到 2 得序列
scala> 1 to 3res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3)scala> 1 until 3res1: scala.collection.immutable.Range = Range(1, 2)
单层循环
scala> for(i <- 1 to 3) println("i=" + i)i=1i=2i=3// 在字符串中替换变量scala> for(i <- 1 to 3) println(s"i=${i}")i=1i=2i=3
输出双层循环中,外循环1到3, 内循环1到2
一般写法:
高级写法:
2)守卫:是以if开头得boolean表达式,每个生成器后面都可以跟一个
如:双层循环中,外循环1到3, 内循环1到2,输出外层循环1到2,内层循环1 得值
一般写法:
高级写法:
3)yield关键字结合for循环使用
val c = for(i <- 1 until 10) yield i
yield 得作用是把每次迭代生成得值封装到一个集合中,当然也可以理解成yield会自动创建一个集合
如果把yield去掉那返回给C得值就为Unit
4.4 循环控制语句#Scala 不支持 break 或 continue 语句,但从 2.8 版本后使用另外一种方式来实现 break 语句。当在循环中使用 break 语句,在执行到该语句时,就会中断循环并执行循环体之后得代码块。
语法格式:
// 导入以下包import scala.util.control.Breaks// 创建 Breaks 对象val loop = new Breaks// 在 breakable 中循环loop.breakable( // 循环 for(...){ .... // 循环中断 loop.break })
代码:
import scala.util.control.Breaks// 单例对象object HelloWorld { def main(args: Array[String]): Unit = {// println("hello world") // 创建breaks对象 val breaks = new Breaks println("实现break") // 实现 i == 3 退出循环 breaks.breakable( // catch 异常 for(i <- 1 to 5){ // 抛异常 if(i == 3) breaks.break() println(s"i=${i}") } ) println("实现continue") for(i <- 1 to 5){ breaks.breakable( if(i == 3){ breaks.break() } else{// val n = 1 / 0 println(s"i=${i}") } ) } }}
执行结果:
海汼部落,原文链接:(hainiubl/topics/75674)






