Scala语法(二)——控制结构

Scala中的基本控制结构有顺序、条件和循环三种方式,这个和其他的JVM语言是一致的,但是Scala也有一些高级的流程控制结构类模式匹配。

1、程序代码:

package com.dtspark.scala.basic
object controlStructures {
  def main(args: Array[String]): Unit = {
    println("Scala")
    var age=10
    //此时因为Worker和Student都是字符串,所以result的类型是string类型
    val result=if(age>25)"Worker"else"Student"
    println(result)

    //此时因为if表达式中的else的内容一个是字符串类型,一个整型,所以result1的类型是两者的公共父类Any
    val result2=if(age>18)"Adult" else 17
    val result3=if(age>18)"Adult"
    //打印的是(),即返回的是空值,Unit类型
    println(result3)

    var x,y=0
    val result4=if(age<18)
    {
      x=x+1
      y=y+1
      x+y
    }else 0
    println(result4)
    for(i<-0 to 5 if i==2)
    {
      println(i)
    }
    var flag=true
    var sum=0
    for(i<-0 to 6 if flag)
    {
      sum=sum+i
      if(5==i) flag=false
    }
    println("sum="+sum)
    sum=0
   /* for(i<-0 to 6)
    {
      sum=sum+i
      //return返回的是方法级别的,即后面的不会执行,直接退出整个def方法
      if(5==i) return
    }
    println("sum with return="+sum)*/
    for(item<-"Hello Spark") println(item)
 import scala.util.control.Breaks._
    flag=true
    breakable
    {
      while(flag)
     {
       for(item<-"Spark")
       {
         println(item)
         if(item=='r') 
           {
             flag=false
             break
           }
       }
     }
    } 
    println("while finished!!!")  
  }
}    

2、语法说明

  • if语句,if条件表达式会根据if后面括号里面的boolean值来决定整个if表达式的值

    • 1.Scala中的if条件表达式是有值的!!!这个跟java是不一样的
    • 2.if条件表达式中可以进行类型推导,类型推导的一般过程就是根据变量值的类型来推导确定变量的类型,这在很多复杂算法的实现时可以让我们
    • 省略掉变量的类型的书写,为复杂算法的实现提供了非常大的便利
    • 3.下面的例子节选自Spark的核心类SparkContext,如果if后面没有else部分,默认的实现时if(…)…else(),在else部分虽然不返回有意义的结果,但依旧没有省略else,而是使用了else{None}这种方式,其目的是为了确保if条件表达式的类型为处理逻辑需要的类型Optinon,而不是Any类型,为下一步的处理打下基础
      例:if(isEventLogEnabled){Some(logger)}else{None}
    • 4.if条件表达式中如果有多条语句可以使用{}包裹起来,{}中的最后一条语句是计算结果
    • 5.{…}代表了一个语句块,语句块是有值的,值就是最后一条语句,值类型就是最后一条语句的类型。
    • 6.if表达式可以用在for循环等其它控制结构中用于限制结果
  • for语句,for循环是不断的循环一个集合,然后根据for循环后面的{…}代码部分会根据for循环(…)里面提取的,集合的item来作为{…}的输入进程流程控制.
    1.for循环中加入的if叫做条件守卫,用于限制for循环(优化for循环,去掉不必要的执行步骤,或者说用于跳出for循环)
    2.在for循环中能够提取出什么内容取决于后面集合的类型
    3.想跳出for循环除了加入if守卫以外,还可以使用return关键字

  • while循环,也是循环集合来作为{…}的输入,进而完成流程的控制的,while循环在实际,Server和Framework开发中至关重要,例如让一个线程一直循环下去,一般都会使用while
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值