Scala系列4、Scala中的控制结构

本文介绍了Scala中的集合操作,包括List的创建及遍历方法,并详细解释了for循环的使用技巧,如生成器、条件过滤和yield的应用。
1、Scala中的集合是这样写的:List(1,2,3,4)  //建立一个int型的集合
2、<- 被称为生成器(generator),在for循环的例子的执行过程中,集合numbList中的元素将依次赋值给a
3、理解yield

【条件表达式】
    1、if...else...,scala中的if/else和java或C++中的一样。不过scala中的if/else是有值的,这个值就是跟在if/eles之后表达式的值。
if(x > 0) 1 else -1
    上述表达式的值可能是1也可能是-1,这取决于x的值。
    另外一种情况是,如果if语句后面返回Int类型,else语句返回String类型,那么整个if/else表达式的返回类型是混合类型,返回这俩个类型的的公共超类——Any。
    还有一种情况是如果只有if的情况下,并且if不满足,那么这时候表达式的返回值是“()”,Unit类型,相当于java或C++中void。(从技术上将,void没有值,unit有一个表示“无值”的值。好比一个空钱包和一个里面装着一张写着“没钱”的无面值钞票的钱包。)
    
【输入和输出】
   我们可以使用readLine函数从控制台读取一行输入。如果要读取数字、Boolean或者字符,可以使用readInt、readDouble、readByte、readShort、readLong、readFloat、readBoolean或者readChar。readLine与其他方法相比,多了一个带参数的方法,可以作为提示字符串
val name = readLine("你的名字")
println("你的名字是:" + name)

【循环】
    Scala中的while循环和do...while循环语法和Java一样。需要重点说明的是for循环
    1、基本for循环
    for循环语法,<-左箭头是用来给变量a赋值。to是包含10,until是不包含10
var a = 0; //这一步不是必须的,for循环内会自动创建的
for(a <- 1 to 10){
println(a);
}
    Scala中的for循环有点类似于for...each循环,对于集合的遍历更能体现
var numbList = List(1,3,4,6,7,8,9,0);
for(a <- numbList){
println(a);
}
    
    2、高级for循环
    我们可以以“变量 <- 表达式”的形式提供多个生成器,用分号将它们分隔开。这个就是java中的嵌套for循环,这个例子中外围i运行一次,j会运行三次,所以整个for循环会运行9次。
for(i <- 1 to 3; j <- 1 to 3) print((10 * i + j) + " ")
//将打印 11 12 13 21 22 23 31 32 33
    for循环中使用if条件过滤,多个if条件中间用分号;隔开,我们把以if开头的Boolean表达式称为“守卫”,注意if之前并没有分号。下面的例子就会把数字3和0给过滤掉。
var numbList = List(1,3,4,6,7,8,9,0);
for(a <- numbList if a != 3; if a > 0){
println(a);
}
    3、for推导式   
    for循环的结果还可以作为变量储存,这就是yield在for循环中的应用,具体语法如下
var numbList = List(1,3,4,6,7,8,9,0);
//yield会把符合条件的a存入一个vector
var retVal = for( a <- numbList if a != 3; if a > 0)yield a

//查看结果
for(i <- retVal){
println(i);
}
//1 4 6 7 8 9
    如果for循环和yield同时使用,yield就相当于java for循环中的方法体
print(for(i <- 1 to 10) yield i % 3)
    //生成Vector(1,2,0,1,2,0,1,2,0,1)
    //yield现在相当于for循环的方法体,每次循环都会运行一下“i % 3”这段代码,然后生成集合中的一个值。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值