Scala - 从for循环创建列表

时间:2018-04-02 22:29:10

标签: scala

是否有一种简单的方法可以从for循环创建一个列表,在循环的每次迭代中迭代迭代器?

例如,假设我有一个迭代器,每次调用它时会返回一个随机的双精度:

val randDoubleIterator = new Iterator[Double] {
    override def hasNext: Boolean = true
    override def next(): Double = {
        Random.nextDouble
    }
}

假设我要创建一个包含10个随机双打的列表。我可以循环遍历迭代器以获得10个随机双打,并将其添加到我的列表(myList)中:

// The following is pseudocode
val myList = new List

for (i <- 0 until 10) {
    myList.add(randDoubleIterator.next())
}

有没有更简单,更简洁的方法呢?

2 个答案:

答案 0 :(得分:5)

这个怎么样:

List.fill(10)(Random.nextDouble())

答案 1 :(得分:3)

我相信这既简单又简洁。

val randDoubleIterator = Iterator.continually(util.Random.nextDouble)

val myList = randDoubleIterator.take(10).toList

这假设您希望稍后在代码中保留randDoubleIterator用于其他目的。