在Groovy中,如何使用紧凑形式的对象初始化数组?我受够了做for-i循环,一定有Groovyer的方式?!;-)
下面是一些稍有不同的场景,最好能介绍一下:
场景1:
Item[] items = new Item[x]
items.initialize { int idx -> new Item(idx) }场景2:
Item[] items = x.times { int idx -> new Item(idx) }或者..。
Item[] items = arrayInit(x) { int idx -> new Item(idx) }场景3-在这里我们不需要索引:
Item[] items = x.times { new Item() }(必须使用@CompileStatic,不过-参考x.times)
这实际上是有效的,但如果有更好的东西就更好了:
Item[] items = new Items[x]
items.eachWithIndex { entry, int i -> items[i] = new Item(i) }发布于 2017-03-27 10:30:44
将下面的类作为Item
@groovy.transform.ToString
class Item {
def id
}您可以通过以下两种方法之一调用它,以生成相同的输出
//You may change it as needed.
def x = 10
def items = (0..<x).collect { new Item(id:it) }
println items或
def items = (0..<x).inject([]){li,item -> li << new Item(id:item);li}
println itemsOR:如果只需要数组类型和CompileStatic
Item[] items = (0..<x).inject([]){li,item -> li << new Item(id:item);li} as Item[]
println items发布于 2017-03-27 12:58:29
Item[] items = new Item[x]
x.times { items[it] = new Item(it) }或者这样吧,
Item[] items = (0..<x).collect{new Item(it)} as Item[]https://stackoverflow.com/questions/43034492
复制相似问题