15_循环结构_for
for循环控制
* 语法
* 1.to 范围数据循环 [x,y]
* for (i <- 1 to 3){
* printf("%d \n")
* }
* 2.until 范围数据循环 [x,y)
* for (i <- 1 until 3){
* printf("%d \n")
* }
* 3.循环守卫(循环保卫式、条件判断式) 保护式为true则进入循环内部,为false时,跳过
* for (i <- 1 to 3 if i != 2){
* printf("%d \n")
* }
* 等价于
* for (i <- 1 to 3 ) {
* if (i != 2)
* printf("%d \n", i)
* }
* 执行顺序 : 获取变量 -> 条件判断 -> true:进入循环体 false:不执行循环体
* 4.by 循环步长
* for (i <- 1 to 10 by 2){
* printf("%d \n")
* }
* 5.循环嵌套
* for (i <- 1 to 3 ; j <- 1 to 4){
* printf("%d - j \n")
* }
* 6.引入变量
* for (i <- 1 to 3 ; j = i * 2){
* printf("%d - j \n")
* }
* 约定 :
* 当for推导式 只有一个表达式式,常用()
* 当有多个表达式时 常用{} 代替 ()
* 等价于
* for {
* i <- 1 to 3
* j = i * 2}
* {
* printf("%d - j \n")
* }
* 等价于
* for (i <- 1 to 3){
* var j = j = i * 2
* printf("%d - j \n")
* }
* 7.yield for循环的返回值 存储到 Vector
* var id = for (i <- 1 to 3) yield {
* i *2
* var k = 9
* k
* }
* 注意事项 : Vector存储的值为 {} 最后一行的值
* 8.reverse 倒序循环
* for (i <- 1 to 3 reverse){
* printf("%d \n")
* }
* 注意事项 : 必须导包 import scala.language.postfixOps
* */
代码示例
/** * @author gaocun * @create 2021-10-17 5:22 PM */ object 循环结构_for_03 { /* for循环控制 * 语法 * 1.to 范围数据循环 [x,y] * for (i <- 1 to 3){ * printf("%d \n") * } * 2.until 范围数据循环 [x,y) * for (i <- 1 until 3){ * printf("%d \n") * } * 3.循环守卫(循环保卫式、条件判断式) 保护式为true则进入循环内部,为false时,跳过 * for (i <- 1 to 3 if i != 2){ * printf("%d \n") * } * 等价于 * for (i <- 1 to 3 ) { * if (i != 2) * printf("%d \n", i) * } * 执行顺序 : 获取变量 -> 条件判断 -> true:进入循环体 false:不执行循环体 * 4.by 循环步长 * for (i <- 1 to 10 by 2){ * printf("%d \n") * } * 5.循环嵌套 * for (i <- 1 to 3 ; j <- 1 to 4){ * printf("%d - j \n") * } * 6.引入变量 * for (i <- 1 to 3 ; j = i * 2){ * printf("%d - j \n") * } * 约定 : * 当for推导式 只有一个表达式式,常用() * 当有多个表达式时 常用{} 代替 () * 等价于 * for { * i <- 1 to 3 * j = i * 2} * { * printf("%d - j \n") * } * 等价于 * for (i <- 1 to 3){ * var j = j = i * 2 * printf("%d - j \n") * } * 7.yield for循环的返回值 存储到 Vector * var id = for (i <- 1 to 3) yield { * i *2 * var k = 9 * k * } * 注意事项 : Vector存储的值为 {} 最后一行的值 * 8.reverse 倒序循环 * for (i <- 1 to 3 reverse){ * printf("%d \n") * } * 注意事项 : 必须导包 import scala.language.postfixOps * */ def main(args: Array[String]): Unit = { // 1.to 范围数据循环 [x,y] for (i <- 1 to 3) { printf("%d \n", i) } // 2.until 范围数据循环 [x,y) for (i <- 1 until 3) { printf("%d \n", i) } // 3.循环守卫(循环保卫式、条件判断式) 保护式为true则进入循环内部,为false时,跳过 for (i <- 1 to 3 if i != 2) { printf("%d \n", i) } for (i <- 1 to 3) { if (i != 2) printf("%d \n", i) } // 4.by 循环步长 for (i <- 1 to 10 by 2) { printf("%d \n", i) } // 5.循环嵌套 for (i <- 1 to 3; j <- 1 to 4) { printf("%d - %d \n", i, j) } // 6.引入变量 for (i <- 1 to 3; j = i * 2) { printf("%d - %d \n", i, j) } for { i <- 1 to 3 j = i * 2 } { printf("%d - %d \n", i, j) } for (i <- 1 to 3) { var j = i * 2 printf("%d - %d \n", i, j) } // 7.yield 循环返回值 存储到 Vector var id = for (i <- 1 to 3) yield { i * 2 var k = 9 k } print(id) print("\n") // 8.reverse 倒序循环 import scala.language.postfixOps for (i <- 1 to 3 reverse) { printf("%d \n", i) } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界