scala 开发入门(2)-- 程序控制结构

if判断结构

语法格式如下:

//简单的条件判断
if (条件判断)
{ //执行语句}  
if (x<10) println(s"$x is smaller than 10")

//if...else...语句
if(条件判断)
   {//为真时执行}
else
   {//为假时执行}

//if...else if...else...语句
if(表达式1)
   {//表达式1为真执行}
else if(表达式2)
   {//表达式2为真执行}
else {//前面都不为真时执行}

if 表达式,if语句语句可以作为值赋值给变量

val x = if("hello" == "hell") 1 else 0   //x:Int = 0

while 循环语句

在程序中不推荐使用while循环,尽量使用for循环。

while循环语句语法格式如下

while(表达式)
 {//表达式为真时执行}

//do...while
do {//先执行,再进行条件判断,如果为真则继续执行}
while(表达式)

注意,在scala中,while和do...while也有返回值,只不过其返回值始终为Unit

for 循环语句

scala中没有C,C++及Java等高级语言中的 for(初始化变量;条件判断;更新变量) 的那种结构的循环,而是有自己独特的for循环风格,Scala 中的基础for 循环语法格式如下。

for(i <- 表达式){
//执行循环中的语句
}
for(i <- 1 to 5){println(s"i = $i")}   //相当于开区间[1,5]

//如果希望是左开右闭,则可以使用 util 
for(i <- 1 until 5){println(s"i = $i")}//相当于python左开右闭 [1,5)

//util 和 to 也可以指定步长
for(i <- 1 to (11,2)){println(s"i = $i")} // 1,3,5,7,9,11
for(i <- 1 until (11,2)){println(s"i = $i")} //1,3,5,7,9

程序中的 <- 被称之为生成器,for循环实际上是通过对集合的遍历来达到循环的目的。但要注意的是,无论是for 循环还是 while循环,scala语言都没有提供java语言中的break,continue关键字。

在循环中如果需要提供类似break语句的功能,在程序中引入 scala.util.control.Breaks 类可以实现。

import scala.util.control.Breaks._
breakable{
   for(i <- 1 to 5) 
     {if(i>2) break 
      println("i="+i)}
 }
//程序运行结果: i=1
               i=2

有过滤条件的 for 循环,也可以起到类似 break 的作用

for(x <- 表达式 if 条件1;if 条件2 ...){
//所有条件都满足时才执行}
for(i <- 1 to 5 if(i<3)) {println(s"i = $i")}  // i = 1 i = 2 跟前面一样起到了 break 的作用

//多条件也可以
for(i <- 1 to 40 if(i%4 == 0);if(i%5 == 0))
{println(s"i=$i")} 
运行结果:i = 20
         i = 40

for循环也可以作为表达式使用 ,同yield一起使用,循环执行完成后有返回值

var x = for(i <- 1 to 5) yield i // x:scala.collection.immutable.IndexedSeq[Int] = Vector(1,2,3,4,5)

//for 循环每执行一次,yield 就会生成对应的值并保存在缓存中。当循环执行完后,它会利用前面缓存中得到的值生成一个集合并返回。关键字 yield 
//后面还可以跟表达式
var x = for(i <- 1 to 5) yield i%2 == 0 //x = Vector(false,true,false,true,false)

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值