0

在 groovy 中进行以下工作 -

for(def i=0;i<10;i++)
    print i

但这在 Java 中有效,C++ 在 groovy 中不起作用 -

for(def i=0,j=0;i<10;i++,j++)
    print i + ' ' + j

为什么?如何使这项工作?

4

2 回答 2

1

它不会工作,因为 Groovy 不接受for 循环中的多个表达式。尝试这个:

[0..10,0..10].transpose().each{ i, j ->
    println i + ' ' + j
}

达到同样的效果。

更新以使其更通用。此更新相当于用i++,递增j+=3

(0..<10).collect{[it, it+3]}.each{ i, j ->
    println i + ' ' + j
}
于 2013-01-26T08:59:13.333 回答
0

你有没有试过这个:

for( def ( int i, int j ) = [ 0, 0 ]; i < 10; i++, j++ )

如果这不起作用,则可能由于最后一部分而失败。

C++ 有一个显式的逗号运算符,这就是它允许这样的构造的方式。

Java 没有逗号运算符,但大概允许这样的构造作为对 for 循环的破解。

如果 Groovy 不允许这样做,很可能是因为它不允许这种 hack。

于 2013-01-26T08:59:08.670 回答