【Groovy】流程控制

devtools/2025/3/1 12:19:24/

1 选择结构

        Groovy 中选择结构主要包含 if -else、switch 语句,并且可以返回结果。

1.1 if-else

Groovy">def score = 85
if (score >= 90) {println("优秀")
} else if (score >= 80) {println("良好")
} else if (score >= 60) {println("及格")
} else {println("不及格")
}

        说明:如果 {} 里只有一条语句,可以省略 {},if-else 语句可以嵌套使用,其他流程控制语句也可以嵌套使用。不同于 Kotlin,Groovyif-else 语句不能作为结果判断,即下面的语句是非法的

Groovy">def score = 85
def res = if (score > 60) "及格" else "不及格"

1.2 switch

        1)简单案例

Groovy">def grade = 'B'
switch (grade) {case 'A':println("优秀")breakcase 'B':println("良好")breakcase 'C':println("及格")breakdefault:println("不及格")break
}

        说明:如果 {} 里只有一条语句,可以省略 {}。不同于 Kotlin,Groovywhen 语句不能作为结果判断。

        2)多分支合并

Groovy">def grade = 'B'
switch (grade) {case 'A':case 'B':case 'C':println("及格")breakdefault:println("不及格")break
}

2 循环结构

        Groovy 中循环结构主要包含 for、while、do-while 循环结构。另外,continue 语句可以控制跳过某次循环,break 语句可以控制跳出循环体。

2.1 for

        for 循环可以对任何提供迭代器(iterator)的对象进行遍历。

        1)遍历整数范围

Groovy">for (int i = 1; i < 5; i++) {println(i) // 打印: 1、2、3、4
}
for (i in 1..<5) {println(i) // 打印: 1、2、3、4
}

        2)遍历数组 / 列表

Groovy">def items = ["aa", "bb", "cc"]
// def items = ["aa", "bb", "cc"] as String[]
for (item in items) {println(item) // 打印: aa、bb、cc
}
items.each {println(it) // 打印: aa、bb、cc
}
for (index in items.indices) {println("items[$index]=${items[index]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}
items.eachWithIndex { item, index ->println("items[$index]=$item") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}

2.2 while

Groovy">def i = 0
while(i < 5) {println(i)i++
}

2.3 do-while

Groovy">def i = 0
do {println(i)i++
} while (i < 5)

2.4 continue

        使用 continue 语句,可以跳过循环体中 continue 后面的语句,继续执行下一轮循环。

        1)单层循环

Groovy">for (i in 1..5) {if (i == 3) continueprintln(i) // 打印: 1、2、4、5
}

        2)多层循环

Groovy">label: for (i in 1..3) {for (j in 4..6) {if (j == 5) continue labelprintln("($i,$j)") // 打印: (1,4)、(2,4)、(3,4)}
}

        说明:label 可以修改为任何符合变量命名规范的名字。

2.5 break

        使用 break 语句,可以跳出循环体,继续执行循环体后面的语句。

        1)单层循环

Groovy">for (i in 1..5) {if (i == 3) breakprintln(i) // 打印: 1、2
}

        2)多层循环

Groovy">label: for (i in 1..3) {for (j in 4..6) {if (j == 5) break labelprintln("($i,$j)") // 打印: (1,4)}
}

        说明:label 可以修改为任何符合变量命名规范的名字。 


http://www.ppmy.cn/devtools/163614.html

相关文章

【每日刷题】Day184

【每日刷题】Day184 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1700. 无法吃午餐的学生数量 - 力扣&#xff08;LeetCode&#xff09; 2. 146. LRU 缓存 - 力扣&a…

SQL Server 视图的更新排查及清除缓存

目录 前言排查方向 前言 获取数据的时候&#xff0c;发现数据少了两个字段值&#xff0c;归根原因是Java中的实体类少写了两个&#xff0c;后续补充上就好了&#xff01; 但也正了解到视图中的刷新原理以及排查机制&#xff0c;如果确认是视图等引起&#xff0c;可结合如下文…

【MyBatis】核心配置文件详解

文章目录 MyBatis核心配置文件详解1.configuration&#xff1a;2.environments&#xff1a;3.environmen&#xff1a;4.transactionManager&#xff1a;5.dataSource&#xff1a;5.1 UNPOOLED&#xff1a;5.2 POOLED&#xff1a;5.3 JNDI&#xff1a; 6. properties7. mapper M…

使用Fuse-DFS挂载文件存储 HDFS-后端存储ceph

1. 编译环境准备 yum install cmake3 ln -s /usr/bin/cmake3 /usr/bin/cmake yum install gcc-c安装挂载依赖 yum -y install fuse fuse-devel fuse-libs执行以下命令&#xff0c;载入FUSE模块 modprobe fuse2. 下载源码包 hadoop-3.3.4-src.tar.gz解压后执行以下命令 打开…

Transformer 代码剖析3 - 参数配置 (pytorch实现)

一、硬件环境配置模块 参考&#xff1a;项目代码 原代码实现 """ author : Hyunwoong when : 2019-10-22 homepage : https://github.com/gusdnd852 """ import torch # GPU device setting device torch.device("cuda:0" if tor…

网络变压器的主要电性参数与测试方法(2)

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;网络变压器的主要电性参数与测试方法&#xff08;2&#xff09;.. 今天我们继续来看看网络变压器的2个主要电性参数与它的测试方法&#xff1a; 1. 线圈间分布电容Cp:线圈间杂散静电容 测试条件:100KHz/0.1…

嵌入式开发:傅里叶变换(4):在 STM32上面实现FFT(基于STM32L071KZT6 HAL库+DSP库)

目录 步骤 1&#xff1a;准备工作 步骤 2&#xff1a;创建 Keil 项目&#xff0c;并配置工程 步骤 3&#xff1a;在MDK工程上添加 CMSIS-DSP 库 步骤 5&#xff1a;编写代码 步骤 6&#xff1a;配置时钟和优化 步骤 7&#xff1a;调试与验证 步骤 8&#xff1a;优化和调…

SV基础(二):数据类型

文章目录 **1. Verilog 的 4 值数据类型****硬件建模的必要性****2. Testbench 中的问题****Verilog 的局限性****3. SystemVerilog 的 2 值数据类型****示例:明确的 2 值操作****4. 何时使用 2 值 vs 4 值****5. 关键优势****6. 注意事项**7. 有符号数与无符号数详解**无符号…