您的位置:首页 > 其它

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

2018-03-06 14:05 246 查看

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 = 40for循环也可以作为表达式使用 ,同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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  scala 控制结构