为什么常规语句的最后的“:”不抛出任何错误?

时间:2018-12-12 08:21:06

标签: java grails groovy colon

我在groovy控制台中错误地编写了以下内容,但后来我意识到它应该抛出错误,但没有。 groovy在语句末尾没有对冒号抛出任何错误的原因是什么?它被分配给文档还是诸如此类?

    a:
    String a
    println a

当我尝试在https://groovyconsole.appspot.com/

中执行此代码时,这没有出错

2 个答案:

答案 0 :(得分:5)

这是一个标签,就像在Java中一样。例如:

a:
for (int i = 0; i < 10; i++)
{
    String a = "hello"
    println a
​    break a; // This refers to the label before the loop
}​

答案 1 :(得分:1)

我可以想到的Groovy中标签的一种很好的用法是Spock Framework,在标签中它们用于子句:

def 'test emailToNamespace'() {
  given:
  Partner.metaClass.'static'.countByNamespaceLike = { count }

  expect:
  Partner.emailToNamespace( email ) == res

  where:
  email                                      |  res                       | count
  'aaa.com'                                  |  'com.aaa'                 | 0
  'aaa.com'                                  |  'com.aaa1'                | 1
}