Groovy 循环语句

2019-04-27 17:02|来源: 网路

到目前为止,我们已经看到已经按顺序方式一个接一个执行的语句。此外,在Groovy中提供了语句来改变程序逻辑中的控制流。然后将它们分类为我们将详细看到的控制语句的流程。

序号 语句和描述
1 while语句

while语句首先通过计算条件表达式(布尔值)来执行,如果结果为真,则执行while循环中的语句。

2 for语句

for语句用于遍历一组值。

3 for-in语句

for-in语句用于遍历一组值。


循环控制语句

序号 语句和描述
1 break语句

break语句用于改变循环和switch语句内的控制流。

2 continue语句

continue语句补充了break语句。它的使用仅限于while和for循环。

相关问答

更多
  • 您不能在java命令中同时使用-jar和-cp ,因此您需要明确指定主类。 纵观groovy-all JAR,主要的类名是groovy.ui.GroovyMain ,所以你需要 java -cp 'src:.:lib/*' groovy.ui.GroovyMain src/com/example/MyScript.groovy (如果groovy-所有的都没有被lib/*覆盖,你需要将它添加到-cp中)。 You can't combine both -jar and -cp in a java comm ...
  • 相当简单的关闭: def map = [ 'iPhone':'iWebOS', 'Android':'2.3.3', 'Nokia':'Symbian', 'Windows':'WM8' ] map.each{ k, v -> println "${k}:${v}" } Quite simple with a closure: def map = [ 'iPhone':'i ...
  • 不,你不能中止一个“每个”,而不会抛出异常。 如果您希望在特定条件下中断中断,您可能需要一个经典的循环。 或者,您可以使用“查找”闭包而不是每个,而当您完成休息时返回true。 此示例将在处理整个列表之前中止: def a = [1, 2, 3, 4, 5, 6, 7] a.find { if (it > 5) return true // break println it // do the stuff that you wanted to before break retu ...
  • 改变你的模板文件看起来像这样: #cat output.template env:<% mapping.eachWithIndex { v, i -> %> - name : ${v.name} value : ${v.value}<% } %> 正如你所看到的,你的模板文件需要一个名为mapping的输入参数,所以你需要将你的主代码改成如下所示: def f = new File('output.template') def engine = new groovy.text. ...
  • 你不能从外部范围访问变量。 但是,您可以将该变量移动到外部作用域。 String nodePort fileContents.split('\n').each { if (it =~ /nodePort:/) { nodePort = (splitted_string[1].trim()) } } println nodePort You cannot access variables from the outer scope. However, you can move ...
  • 首先澄清一些事情:运行时元编程意味着有一个自修改程序。 它在运行时会自行改变。 这通常通过修改元类来完成。 Compiletime Metaprogramming意味着通过“扩展”编译器来修改程序。 通常后者用AST变换完成。 Groovy将字节码提供给JVM来执行。 可能有或没有可用的源文件,但通常没有运行时结构,它保留源。 从元类到AST的映射,但这基本上在类路径上搜索拟合源文件并从中编译AST。 如果您无法使用该来源,则无法使用。 即使源可用,也不会为您提供所需的修改功能。 需要编译一个新类,然后使用 ...
  • List a a.each { x -> println(x.name) List b = something b.each { y -> println(x.name + y.name) } } List a a.each { x -> println(x.name) List b = something b.each { y -> println(x.name + y.name) } }
  • def list = WordList.list() list = list.collect { [name: it.name, id: it.id] } render(contentType: 'application/json') { [lists: list] } def list = WordList.list() list = list.collect { [name: it.name, id: it.id] } render(contentType: 'application/jso ...
  • verify方法应该接受包含断言的Closure (代码块),执行它并存储抛出的任何异常。 用法然后如下所示: verify { assert 8 == (3 + x) * z } 。 如果使用Spock的@ConditionBlock注释注释该方法并将其放在Spock可以在编译时找到它的位置(例如基类),则甚至可以省略assert关键字。 请注意,Spock的条件与Groovy的电源断言不同。 如果您捕获Spock的ConditionNotSatisfiedError ,您将获得有关断言的更多信息(例如, ...
  • 有问题的代码是: s='s=\\\';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2 因此,左边的语句定义了一个字符串,然后右边的语句将字符串的不同位加在一起: 如果我们添加以下内容以打印出它正在做的事情: println s[0..1] println s[3] println s[0..1] println s[2] * 6 println s[3..-1] * 2 我们得到输出: s= ' ...