在Scala中生成由函数生成的值列表

7
我需要生成一些随机数并对其求和。类似于:
result = generateList(range(0, max), generatorFunctionReturningInt()).foreach(sum _)

如果generateList使用generatorFunctionReturningInt生成值,生成的列表大小为max。
或者可能是这样的:
result = range(0, max).map(generatorFunctionReturningInt).foreach(sum _)
4个回答

15

这个怎么样?

Stream.continually(generatorFunctionReturningInt()).take(max).sum

11

各种集合类型的伴生对象有一些方便的工厂方法。尝试使用:

Seq.fill(max)(generate)

4

只需要

(0 to max).map(_ => (new util.Random).nextInt(max)).sum

max定义了数字数量和随机范围。

foreach方法旨在与有副作用的函数(如println)一起使用,该函数不返回任何值(Unit)。


0

foreach 不适用于返回结果,请使用 map 代替:

val result = Range (0, max).map (generatorFunctionReturningInt).map (sum _)

具体来说,sum已经预定义了,对吧?

val result = Range (0, max).map (generatorFunctionReturningInt).sum

可运行的代码(我们都喜欢可运行的代码)

val result = Range (0, 15).map (3 + _).sum
result: Int = 150

对于这个简单的情况,它与Range(3, 18).sum相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接