网站首页 > 基础教程 正文
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 = 1
while(x <= 10){
print(x + " ")
x = x + 1
}
x = 1
do{
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 3
res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3)
scala> 1 until 3
res1: scala.collection.immutable.Range = Range(1, 2)
单层循环
scala> for(i <- 1 to 3) println("i=" + i)
i=1
i=2
i=3
// 在字符串中替换变量
scala> for(i <- 1 to 3) println(s"i=${i}")
i=1
i=2
i=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}")
}
)
}
}
}
执行结果:
海汼部落原创文章,原文链接:(http://hainiubl.com/topics/75674)
猜你喜欢
- 2024-10-12 Scala初学者入门指南!涵盖20多个基本技巧
- 2024-10-12 Scala循环性能问题,为了性能,你愿意牺牲代码的可维护性么?
- 2024-10-12 使用Apache Kafka时的7个错误 apache kafka实战pdf
- 2024-10-12 scala中为什么不建议用return scala for until
- 2024-10-12 scala——泛型方法、类、特质的使用,泛型边界、协变逆变非变
- 2024-10-12 程序员构建总是出问题,怎么办? 程序员构建总是出问题,怎么办呢
- 2024-10-12 scala——列表、元祖、列表相关知识
- 2024-10-12 scala语言基础图解-第一阶段(变量-条件-循环-方法-函数-集合)
- 2024-10-12 Scala入门视频已更新至88讲,后续还有大约20讲左右的视频就结束
- 2024-10-12 Scala快速入门 - 环境安装篇 scala安装步骤
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)