scala控制结构


Scala中的控制结构,与其他编程语言,比如Java相比,并无太大差别,主要是分支和循环为主。但Scala中的控制结构大多具有返回值,而其他编程语言中的控制结构一般就仅仅是用于流程控制。

条件表达式

分支结构应该编程中最为常用的控制结构了,典型就是if-else。在Scala中,分支结构也是用关键字if-else,更具体的说无外乎以下3种形式:

if(布尔表达式 1){
   // 如果布尔表达式 1 为 true 则执行该语句块
}else if(布尔表达式 2){
   // 如果布尔表达式 2 为 true 则执行该语句块
}else if(布尔表达式 3){
   // 如果布尔表达式 3 为 true 则执行该语句块
}else {
   // 如果以上条件都为 false 执行该语句块
}

val s = if  (x > 0) 1 else -1

if  (x > 0) s = 1 else s = -1

Scala中 if 表达式有返回值。如果if 和 else 的返回值类型不一样,那么就返回两个返回值类型公共的父类。

object IfDemo {

  def main(args: Array[String]): Unit = {
    val num = 20
    
    if (num > 20) "张三" else "李四"
    
    if (num > 20) 0 else if (num == 20) 1 else 0

    //因为if else 有返回值,那么可以直接将if else语句赋值给一个变量
    // if else 语句的返回值,不需要加return
    val name = if (num > 20) "张三" else "李四"

    //如果if else 语句中,两个返回值类型不一样
    //此时Scala会自动推断出两者的公共父类型,然后将公共父类型作为表达式的返回值类型
    var name2: Any = if (num == 20) "张三" else 100

    //如果if else 语句中,缺省else语句块,那么默认else的值就是Unit
    // Unit用()表示,类似Java中的void
    val name3 = if (num == 20) "王武"
    //name3 与 name4等同
    val name4 = if (num == 20) "王武" else ()
  }
}

循环结构

Scala中,for循环语法结构:for (i <- 表达式 / 集合),让变量 i遍历<-右边的表达式/集合的所有值。

for (i <- 1 to 3; j <-  1 to 3)  print((10 * i + j) +  " ")
// 11 12 13 21 22 23 31 32 33

for

Scala拥有与Java和C++相同的循环结构

Range可以是一个数字区间表示i to j,或者i until j;左箭头<- 用于为变量x赋值。

for( var x <- Range ){
   statement(s);
}

大括号{}中用于保存变量和条件,retVal是变量, 循环中的yield会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。

var retVal = for{ var x <- List
     if condition1; if condition2...
}yield x

while

Scala提供了与 Java 类似的while和do…while循环。while语句的本身没有任何返回值类型,即while语句的返回结果是Unit类型的 () 。

Scala内置控制结构特地去掉了 break 和 continue。
特殊情况下如果需要终止循环,可以有以下三种方式:

  • 使用Boolean类型的控制变量
  • 使用return关键字
  • 使用breakable和break,需要导入scala.util.control.Breaks包

对于Scala中的while循环,只要给定的条件为true,循环语句会重复执行循环体内的代码块。

while(condition)
{
   statement(s);
}

do…while

do...while循环会确保至少执行一次循环。

do {
   statement(s);
} while( condition );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上行舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值