Scala内建控制结构

零、本讲学习目标

  • 掌握条件表达式
  • 掌握各种循环
  • 理解流间变量绑定
  • 掌握yield语句的使用
  • 掌握异常处理语句
  • 了解match语句的使用
  • 理解变量作用域

Scala提供的控制结构并不算多,因为在函数式编程中,可以自己开发出各种功能的控制结构,所以Scala提供的原生控制结构仅仅够用为止。

一、条件表达式

(一)语法格式

if (条件) 值1 else 值2

(二)执行情况

  • 条件为真,结果是值1;条件为假,结果是值2。如果if和else的返回结果同为某种类型,那么条件表达式结果也是那种类型,否则就是Any类型

(三)案例演示

任务1、根据输入值的不同进行判断
在这里插入图片描述

  • 当然也可以在一个表达式中进行多次判断
    在这里插入图片描述

  • 可以将上述条件表达式改造成嵌套的选择结构,可读性倒是提高了,但是简洁性降低了
    在这里插入图片描述

二、块表达式

(一)语法格式

  • 块表达式为包含在符号“{}”中的语句块

(二)执行情况

  • 需要注意的是,Scala中的返回值是最后一条语句的执行结果,而不需要像Java一样单独写return关键字。如果表达式中没有执行结果,就返回一个Unit对象,类似Java中的void。

(三)案例演示

  • 语句块最后一句的值就是整个块表达式的结果
    在这里插入图片描述

  • 语句块最后一句没有执行结果,那么块表达式结果就是Unit
    在这里插入图片描述

三、for循环

(一)单重for循环

1、语法格式

for (变量 <- 集合或数组 (条件)) {
     语句组
}

2、执行情况

  • 表示将集合或数组中的每一个值循环赋给一个变量
    3、案例演示
    任务1:输出1到10

  • 两种方式实现
    在这里插入图片描述

  • Range(a, b): 从a到b,不包含b,跟Python里的range函数一样,含头不含尾

  • 1 to 10表示将1到10的所有值组成一个集合,且包括10。若不想包括10,则可使用关键字until
    在这里插入图片描述

  • 打印字符直角三角形
    在这里插入图片描述

  • 利用map函数产生每行星号构成的向量,然后利用foreach函数循环输出
    在这里插入图片描述

  • 利用双重循环与流间变量
    在这里插入图片描述

任务2、遍历字符串,输出每个字符

  • 方法一、按索引取字符串的每个字符
    在这里插入图片描述

  • 方法二:将字符串看作一个由多个字符组成的集合
    在这里插入图片描述

  • 从Scala2.13.0开始,其它类型数据与字符进行+运算,会抛出警告信息
    在这里插入图片描述

  • c是Char类型,因此需要调用toString方法,将其转换成字符串,才能与其它字符串连接
    任务3、计算 1 + 2 + 3 + … + 100

  • 注意sum必须定义为var型变量
    在这里插入图片描述

任务4、输出列表内的偶数

  • 采用两种方式来实现
    在这里插入图片描述
    任务5、输出全部两位素数
for (n <- 10 to 100; if !(n % 2 == 0 || n % 3 == 0 || n % 5 == 0 || n % 7 == 0))
    print(n.toString + " ")

在这里插入图片描述

(二)嵌套for循环

1、语法格式

  • 传统格式
for (变量1 <- 集合或数组(条件))
    for (变量2 <- 集合或数组(条件)) {
       语句组
    }
}

  • 特有格式
for (变量1 <- 集合或数组; 变量2 <- 集合或数组 (条件)) {
   语句组
}

2、案例演示

任务1、打印九九表
任务2、去掉对角线

  • 一个三阶方阵,单元格的值是行号与列号的乘积,去掉对角线,输出剩余元素
    在这里插入图片描述

  • 方法一、传统双重循环
    在这里插入图片描述

  • 方法二、特有双重循环
    在这里插入图片描述

四、条件循环

(一)while循环

1、语法格式

  • Scala的while循环与Java类似
    2、案例演示
    任务1、计算1+ 2 + 3 + … + 100

  • 注意:sum必须是变量
    在这里插入图片描述

  • 采用函数式风格来写代码,递归函数来实现求和,注意:此处sum是常量
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值