二维码
微世推网

扫一扫关注

当前位置: 首页 » 快报资讯 » 今日快报 » 正文

scala_系列之_03scala_控制结构

放大字体  缩小字体 发布日期:2021-12-27 05:19:28    作者:高浩综    浏览次数:319
导读

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 = 1whil

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)

 
(文/高浩综)
免责声明
• 
本文仅代表发布者:高浩综个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,需自行承担相应责任。涉及到版权或其他问题,请及时联系我们删除处理邮件:weilaitui@qq.com。
 

Copyright©2015-2025 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈