教程列表
相关文章
更多最近更新
更多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 ...
-
通过Groovy中的地图循环?(Loop through Map in Groovy?)[2022-03-17]
相当简单的关闭: 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 ...
-
使用groovy循环模板GStringTemplateEngine()(looping a template using groovy GStringTemplateEngine())[2023-09-08]
改变你的模板文件看起来像这样: #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 ...
-
Groovy元编程(Groovy Meta-Programming)[2021-11-21]
首先澄清一些事情:运行时元编程意味着有一个自修改程序。 它在运行时会自行改变。 这通常通过修改元类来完成。 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) } }
-
在Groovy中渲染JSON(Render JSON in Groovy)[2022-07-05]
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 ,您将获得有关断言的更多信息(例如, ...
-
Groovy quine!(Groovy quine! How does it work?)[2022-05-26]
有问题的代码是: 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= ' ...