实现 Break 和 Continue|学习笔记

简介: 快速学习实现 Break 和 Continue。

开发者学堂课程【Scala 核心编程-基础:实现 Break 和 Continue】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/8925


实现 Break 和 Continue

 

目录

一、讲解作业

二、while 循环的中断

三、如何实现 Continue 的效果

四、补充 Break 细节

 

一、讲解作业

有三个题目

1.100以内的数求和,求出当和第一次大于20的当前数【for】

2.实现登录验证,有三次机会,如果用户名为“张无忌”,密码“888”提升登录成功,否则提示还有几次机会,请使用 for 循环完成。

3.某人有100000元,每经过一次路口,需要交费,规则如下:

(1)当现金>50000时,每次交5%

(2)当现金<=50000时,每次交1000

编程计算该人可以经过多少路口,使用方式完成

第二题和第三题在做 Java 的时候已经讲过,现在就可以把以前 Java 写过的代码改成 Scala。

比如说做第一道题的时候,它会使用到 Break 的效果。

 

二、while 循环的中断

1.基本说明

Scala 内置控制结构特地去掉了 break 和 continue,是为了更好的适应函数化编程,推荐使用函数式的风格解决break和 continue 的功能,而不是一个关键字。

2.为什么去掉 break 和 continue

因为 Scala 设计者马丁,他认为 break 和 continue 不属于 oop 的一个范畴;他认为这个关键字它既不是 opp 的,也不是函数式变成的。因此,他就把这两个关键字拿掉了。拿掉了之后它使用函数式的

3.while 循环的中断说明

这里虽然写的是 while 循环的中断,但是这个效果也可以使用在 dowhile 或者是 for 循环。

一种风格来实现 break 和 continue 的效果。主要就是 break 就是 break,而不是一个关键字。

4.案例演示

(1)原代码

import util.control.Break._

var n = 10

breakable{

while(n <=20) {

n += 1

if(n == 18) {

braek()

}

}

image.png

(2)讲解代码

var n = 10是一个变量

其中有一个 while 循环

while(n <=20) {

n += 1

if(n == 18) {

braek()

}

在while循环里面对循环变量 n 不停地对+1

+1完了之后,如果发现 n == 18,它就调用了一个 braek 函数

braek 函数的作用是抛出一个异常,这个异常会被 breakable 进行一个处理

(3)书写代码

创建一个包:break 不能直接作为包名

创建一个名为 mybraek 的包

package com.atguigu.chaper04.mybreak

import util.control.Breaks._

object WhileBreak {

def main(args:Array[String]): Unit = {

var n = 1 //输入代码

while (n <= 20) { //如果 n<= 20就要进入 while 循环里面去

n += 1 //每进一次,就让 n+1

//加完之后就做一个判断

println("n=" + n)

if (n == 18)  { //如果 n=18

//中断 while 循环

//说明

//1.在 scala 中使用函数式的 break 函数中断循环

//2.def braeak(): Nothing = { throw braeakException }

braeak()

//前面需要引入 import util.control.Break._

点开 braeak

def braeak()是一个函数-def 是函数的关键字

这里其实是扔出去了一个异常

如果出现 Nothing 就说明这一个函数就是一个非正常的中断或者是一个非正常的执行

这里就是用 def braeak(): Nothing = { throw braeakException }抛出一个异常

image.png

}

}

//如果在这里增加 ok~~

println("ok~~")

}

执行

image.png

image.png

因为在代码里面是 n+1,所以开始就是 n=2开始,一直到 n=18。再抛出一个异常 Exception in thread "main" scala.util.control.BreakControl

抛出异常之后,因为没有处理异常,所以 ok~~没有被输出,因为程序异常而中断了。

这样就引出了让代码继续执行

(4)breakable

import util.control.Breaks._

object WhileBreak {

def main(args:Array[String]): Unit = {

var n = 1

//breakable()函数

image.png

//添加 breakable 函数的时候,这里有一个参数 op: => Unit

//这里 breakable 是一个高阶函数,正常情况下,需要把 breakable 后面代码全部包起来:breakable 后面是一个(),breakable 是(,)放在代码最后

//包起来之后。做一个说明

//说明

//1.breakable 是一个高阶函数:可以接收函数的函数就是高阶函数(后面详解)

//2.def breakable (op: => Unit0) {

def breakable (op: => Unit0)是一个函数

op 是函数代表的名称,如果 op:后面没有值就代表它接收的是一个没有输入(没有形参、没有返回值)的函数

//点开 breakable,出现下图

image.png

//将图中代码移动到本代码中

//def breakable (op: => Unit0)

//try {

//op

//} catch {

//case ex: BreakControl =>

//if (ex ne breakException) throw ex

//}

//}

//将图中代码注释(前面全部加//)

//(1)op: => Unit0 表示接收的参数是一个没有输入,也没有返回值的函数

//(2)既可以简单理解可以接收一段代码块

//相当于 breakable 把后面的代码作为一个代码块全部传给了 op

//3.breakable 对 break()抛出的异常做了处理,代码就可以继续执行

//4.但我们传入的是代码块,scala 程序员会将()改成[]

//所以 println("ok~~")就会正常输出

breakable(

while (n <= 20) {

n += 1

println("n=" + n)

if (n == 18)

//中断 while 循环

//说明

//1.在 scala 中使用函数式的 break 函数中断循环

//2.def braeak(): Nothing = { throw braeakException }

braeak()

println("ok~~")

}

}

执行

ok~~就执行出来了

image.png

(5)完整代码输出

import util.control.Breaks._

object WhileBreak {

def main(args:Array[String]): Unit = {

var n = 1

//breakable()函数

//说明

//1.breakable 是一个高阶函数:可以接收函数的函数就是高阶函数(后面详解)

//2.def breakable (op: => Unit0) {

//def breakable (op: => Unit0)

//try {

//op

//} catch {

//case ex: BreakControl =>

//if (ex ne breakException) throw ex

//}

//}

//(1)op: => Unit0 表示接收的参数是一个没有输入,也没有返回值的函数

//(2)既可以简单理解可以接收一段代码块

//3.breakable 对 break()抛出的异常做了处理,代码就可以继续执行

//4.但我们传入的是代码块,scala 程序员会将()改成[]

breakable(

while (n <= 20) {

n += 1

println("n=" + n)

if (n == 18)

//中断 while 循环

//说明

//1.在 scala 中使用函数式的 break 函数中断循环

//2.def braeak(): Nothing = { throw braeakException }

braeak()

}

}

println("ok~~")

}

}

 

三、如何实现 Continue 的效果

1.说明

Scala 内置控制结构特地也去掉了 continue,是为了更好的适应函数化编程,可以使用 if-else 或是循环守卫实现continue 的效果。

2.案例

for(i<-1 to 10 if (i != 2 && i != 3)) {

println("i=" +i)

}

3.代码

package com.atguigu.chapter04.mycontinue

object ContinueDemo {

def main(args: Array[String]):Unit = {

//说明

//1. 1 to 1.

//2.循环守卫  if (i != 2 && i != 3)这个为真,才执行循环体

//即当 i == 2 或者 i == 3时,就跳过

for(i<-1 to 10 if (i != 2 && i != 3)) {

println("i=" +i)

}

}

执行

image.png

2和3就跳过了

其他形式

println("=============================")

for(i<-1 to 10) {

if (i != 2 && i != 3) {

println("i=" +i)

}

}

执行效果一样

 

四、补充 Break 细节

braeak()

}

}

println("ok~~")

//注意 break 函数,可以使用再 for 或者 do..while

breakable

for (i <- 1 to 100) {

println("i=" + i)

if (i == 20 ) {

}

}

}

println("ok2~~~~")

}

}

执行

i 不停地找,就找到了 ok~~

 image.png

然后继续找到20,找到20之后,就 break

image.png

相关文章
|
8月前
|
C语言
break和continue语句
`break` 和 `continue` 是 C 语言中控制循环流程的关键字。`break` 用于立即退出循环,不再执行循环体剩余部分。而 `continue` 则跳过当前循环的剩余语句,然后继续下一轮循环。在 `while`、`for` 和 `do while` 循环中,它们的作用相同。例子展示了在不同情况下使用 `break` 和 `continue` 如何影响循环执行。
69 2
|
8月前
|
C语言
break与continue详解
break与continue详解
91 1
|
8月前
|
JavaScript 前端开发
break
break
52 0
continue和break的区别
continue和break的区别
132 0
break 和 continue
break 和 continue自制脑图 break 可以用来立即退出循环语句(包括 else),continue作用:可以跳过当次循环,break 和 continue 都是只对离它们最近的循环起作用,
87 0
break 和 continue
|
数据安全/隐私保护 开发者 Python
Break 和 continue 的使用 | 学习笔记
快速学习 Break 和 continue 的使用
写出continue和break的区别
写出continue和break的区别
124 0
break和continue区别
break和continue区别
152 0
break和continue区别
|
开发者 Python
break 和 continue|学习笔记
快速学习 break 和 continue
107 0