While 循环|学习笔记

简介: 快速学习 While 循环。

开发者学堂课程【Scala 核心编程-基础While 循环】学习笔记,与课程紧密联系,让用户快速学习知识。

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


While 循环

 

目录

一、while 循环

、While 循环基本语法

、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循环条件是返回一个布尔值的表达式

2while 循环是先判断再执行语句

3If 语句不同,While 语句本身没有值,即整个 while 语句的结果是 Unit 类型的(即没有返回值)

4因为 while 中没有返回值,所以当要用该语句来计算并返回结果时,就不可避免的使用变量,而变量需要声明在 while 循环的外部,那么就等同于循环的内部对外部的变量造成了影响,所以不推荐使用,而是推荐使用 for 循环。

(因为 for 循环中的变量是 var 类型的,for 循环中的变量没有使用到外面的变量;对于解决函数的输入值会用到外层scala 设计者推荐使用函数的递归来解决,当用递归时,函数的外部变量便会使用递归在内部进行变化这是一个纯函数概念;无论是 for 循环、while、dowhile、函数都可以用递归的方法,尽量做到不使用外部变量)

相关文章
|
SQL 存储 关系型数据库
对线面试官 - 如何理解MySQL的索引覆盖和索引下推
索引下推是MySQL 5.6引入的优化,允许部分WHERE条件在索引中处理,减少回表次数。例如,对于索引(zipcode, lastname, firstname),查询`WHERE zipcode=&#39;95054&#39; AND lastname LIKE &#39;%etrunia%&#39;`时,索引下推先过滤zipcode,然后在索引中应用lastname条件,降低回表需求。索引下推可在EXPLAIN的`Using index condition`中看到。
1286 0
对线面试官 - 如何理解MySQL的索引覆盖和索引下推
|
存储 搜索推荐 PyTorch
通义千问7B-基于本地知识库问答
上期,我们介绍了通义千问7B模型的微调+部署方式,但在实际使用时,很多开发者还是希望能够结合特定的行业知识来增强模型效果,这时就需要通过外接知识库,让大模型能够返回更精确的结果。
|
运维 大数据 数据建模
连载7:阿里巴巴大数据实践:OneData模型实施介绍
如何从具体的需求或项目转换为可实施的解决方案,如何进行需求分析、架构设计、详细模型设计等,则是模型实施过程中讨论的内容。
6633 1
连载7:阿里巴巴大数据实践:OneData模型实施介绍
|
9月前
|
存储 人工智能 文字识别
pdf-craft:PDF秒转Markdown/EPUB!接入DeepSeek轻松生成电子书,自动整理目录、注释和引文
pdf-craft是一款专注于处理扫描书籍PDF的开源工具,能精准提取正文内容并转换为Markdown/EPUB格式,通过AI算法解决跨页连贯性问题,是学术研究和电子书制作的利器。
1736 10
|
8月前
|
Linux 数据处理 Python
编译dpdk19.08.2中example时一系列报错解决
编译dpdk19.08.2中example时一系列报错解决
397 4
|
Linux iOS开发 MacOS
BACnet 调试工具 工程师必备
BACnet是由ASHRAE开发的标准通信协议,专用于楼宇自动化和控制网络。它支持对象访问、报警与事件处理、文件传输及远程设备管理等功能,实现了跨平台操作。BACnet Explorer作为一款强大的工具,不仅便于浏览与控制BACnet设备,还内置了设备模拟器以辅助调试工作。其用户友好的界面设计确保了高效便捷的操作体验。
721 3
BACnet 调试工具 工程师必备
|
前端开发 Java Spring
【非降版本解决】高版本Spring boot Swagger 报错解决方案
【非降版本解决】高版本Spring boot Swagger 报错解决方案
1028 3
|
Ubuntu Linux 开发工具
idea使用git提交代码报异常refusing to merge unrelated histories和unknown option `allow-unrelated-histories‘
idea使用git提交代码报异常refusing to merge unrelated histories和unknown option `allow-unrelated-histories‘
|
关系型数据库 MySQL
mysql下载源码方法
方法一 进入mysql官网:http://dev.mysql.com/downloads/mysql/ 选择相关的平台下载:     3.选择Source Code 选型后,拉倒网页下方,选择要下载的源码包         4.
14545 2