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

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”这段代码,然后生成集合中的一个值。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值