Scala基础知识

发布于:2025-04-02 ⋅ 阅读:(24) ⋅ 点赞:(0)

循环守卫

循环守卫的概念,通过足球守门员的比喻,说明了循环守卫的作用是控制循环的执行。具体实现是通过在for循环中添加if判断语句,如果条件不满足则跳出循环。

基本格式:

 

 

(1) 循环守卫,即循环保护式(也称条件判断式,守卫)。保护式为 true 则进入循环体内部,为false 则跳过,类似于continue。

(2) 上面的代码等价

 

 

示例如下:

需求:输出 1 到 5 中,不等于 3 的值

 

 

 

循环步长

在for循环中设置步长,默认步长为1,可以通过指定步长来改变循环的取值间隔。例如,设置步长为2时,循环变量会每次增加2。

1) 基本语法

for (i <- 1 to 10 by 2)

{ println("i=" + i)

}

说明:by 表示步长

示例如下:

需求:输出 1 到 10 以内的所有奇数

 

 

嵌套循环

嵌套循环指在一个循环结构内部包含另一个循环结构。常用于处理需要多重迭代的场景

1) 基本语法

2) for(i <- 1 to 3; j <- 1 to 3) { println(" i =" + i + " j = " + j)

}

说明:没有关键字,所以范围后一定要加;来隔断逻辑

3)基本语法

for (i <- 1 to 3) {

for (j <- 1 to 3) {

println("i =" + i + " j=" + j)

}

}

引入变量

1) 基本语法

for(i <- 1 to 3; j = 4 - i) { println("i=" + i + " j=" + j)

}

(1) for 推导式一行中有多个表达式时,所以要加 ; 来隔断逻辑

(2) for 推导式有一个不成文的约定:当 for 推导式仅包含单一表达式时使用圆括号, 当包含多个表达式时,一般每行一个表达式,并用花括号代替圆括号,如下

for {

i <- 1 to 3 j = 4 - i

} {

println("i=" + i + " j=" + j)

示例如下:

 

 

循环返回值

通过for循环返回一个集合。使用yield关键字可以在循环中逐个返回值,最终形成一个包含所有返回值的集合。

1) 基本语法

val res = for(i <- 1 to 10) yield i

println(res)

 

for(i <- 1 to 10 reverse){ println(i)

}

说明:将遍历过程中处理的结果返回到一个新 Vector 集合中,使用 yield 关键字。Kaifa

示例如下:

 

 

倒序打印

使用reverse关键字实现倒序打印。通过在for循环中添加reverse关键字,可以实现数据的倒序输出。

1) 说明:如果想倒序打印一组数据,可以用 reverse。

2) 示例如下:

需求:倒序打印 10 到 1

 

 

循环中断

在scholar中没有break和continue关键字,推荐使用函数式编程风格来实现循环中断。通过抛出异常或调用特定函数可以实现循环的中断。

 

多重循环与多分支选择

scholar中没有switch关键字,多分支选择可以通过函数式编程的方式来实现。

 

1) 基本说明

(1) 将 一 个 循 环 放 在 另 一 个 循 环 体 内 , 就 形 成 了 嵌 套 循 环 。 其 中 ,for,while,do…while均可以作为外层循环和内层循环。【建议一般使用两层,最多不要 超过 3 层】

(2) 设外层循环次数为m 次,内层为 n 次,则内层循环体实际上需要执行 m*n 次。

示例如下:鸡兔同笼问题

 


网站公告

今日签到

点亮在社区的每一天
去签到