生成随机数并传递给Groovy中的方法

时间:2015-04-21 13:12:29

标签: random groovy

我有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)
        }
    }

2 个答案:

答案 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运算符展平数组