开发者学堂课程【Scala 核心编程-基础:While 循环】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8921
While 循环
目录
一、while 循环
while 循环在 scala 里并不推荐使用,但仍然在使用。while 循环没有被禁用。
例如: var list=List(1,2)//List 的源代码中,有大量用 while 循环,如下源代码程序段:
……
Serializable {
private def writeobject (out: objectoutputstream) {
out.defaultwriteObject()
var xs: List[A] = orig
while ( !xs.isEmpty) {
out.writeobject(xs.head)
xs = xs.tail
……
val builder = List.newBuilder[A]
while (true) in.readobject match {
case ListSerializeEnd =>
orig = builder.result()
return
case a =>
builder += a.asInstance0f[A]
……
可以看到很多 while 循环。有时候不使用 while 是很难用 for 循环实现。只是 Scala 的设计者推荐使用 for 循环。
二、While 循环基本语法
循环变量初始化
while(循环条件){
循环体(语句)
循环变量迭代(循环变量在外定义的)
}
三、while 循环应用实例
1、画出流程图
2、输出10句"你好,尚硅谷"
代码案例演示:
新建一个 mywhile 包,再在此包下新建一个 Scala 的 Object 类的文件名为 whiledemo01,输入代码如下:package com.atguigu.chapter04.mywhile
object whileDemo01 {
def main(args : Array[String]): Unit = {
//输出10句 hello,尚硅谷
//定义循环变量
var i = 0 //循环变量
while (i < 10){ //i <10循环变量的条件
println( "he11o,尚硅谷"+i) //循环体;输出"he11o,尚硅谷"
i += 1 //循环变量的迭代
}
}
}
运行结果如下(10句,从0开始):
hello,尚硅谷0
hello,尚硅谷1
hello,尚硅谷2
hello,尚硅谷3
hello,尚硅谷4
hello,尚硅谷5
hello,尚硅谷6
hello,尚硅谷7
hello,尚硅谷8
hello,尚硅谷9
四、注意事项和细节说明
1.循环条件是返回一个布尔值的表达式
2.while 循环是先判断再执行语句
3.与 If 语句不同,While 语句本身没有值,即整个 while 语句的结果是 Unit 类型的(即没有返回值)
4.因为 while 中没有返回值,所以当要用该语句来计算并返回结果时,就不可避免的使用变量,而变量需要声明在 while 循环的外部,那么就等同于循环的内部对外部的变量造成了影响,所以不推荐使用,而是推荐使用 for 循环。
(因为 for 循环中的变量是 var 类型的,for 循环中的变量没有使用到外面的变量;对于解决函数的输入值会用到外层。scala 设计者推荐使用函数的递归来解决,当用递归时,函数的外部变量便会使用递归在内部进行变化。这是一个纯函数概念;无论是 for 循环、while、dowhile、函数都可以用递归的方法,尽量做到不使用外部变量)