使用Scala中的函数生成的值生成List

时间:2011-08-23 15:36:42

标签: list scala generator

我必须生成一些随机数并将它们相加。像

这样的东西
result = generateList(range(0, max), generatorFunctionReturningInt()).foreach(sum _)

如果generateList生成尺寸=最大的ListgeneratorFunctionReturningInt生成的值

或者可能像

result = range(0, max).map(generatorFunctionReturningInt).foreach(sum _)

4 个答案:

答案 0 :(得分:15)

这个怎么样?

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

答案 1 :(得分:11)

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

Seq.fill(max)(generate)

答案 2 :(得分:4)

简单地

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

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

foreach方法用于副作用函数(如println),它不返回任何内容(Unit)。

答案 3 :(得分: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相同。