我有select(int a, int b, int c)
方法,我想传递3个随机生成的值和select()
。所以我这样做:
public void select() {
Random random = new Random()
def values= []
(1..3).each {
values<< random.nextInt(100 + 1)
}
select(values[0], values[1], values[2])
}
但它是Groovy代码,我想缩短它。我怎么能这样做我可以做的事情(我不能但是如何修改它才能运行):
public void select() {
select((1..3).each {
values<< random.nextInt(100 + 1)
}
}
答案 0 :(得分:3)
你可以这样做:
def select() {
select(*new Random().with { r -> (1..3).collect { r.nextInt() } })
}
或者,如果您不喜欢with
,并希望它更具解释性:
def select() {
def r = new Random()
def args = (1..3).collect { r.nextInt() }
select(*args)
}
答案 1 :(得分:1)
如果你使用Java 8,你可以使用产生无限流的Random.ints()方法,并使用limit(3)查看前三个:
def select() {
select(*new Random().ints().limit(3).toArray())
}
再次使用splat运算符展平数组