2011-08-23 12 views
6

Debo generar algunos números aleatorios y sumarlos. Algo así comoGenerar una lista con los valores generados por la función en Scala

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

Si generateList genera una List con size = max y valores generados por generatorFunctionReturningInt

o puede ser algo así como

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

Respuesta

4

Simplemente

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

donde max define tanto el número de números y rango aleatorio.

foreach método destinado a ser utilizado con funciones de efectos secundarios (como println) que no devuelve nada (Unit).

0

foreach no es para el retorno de los resultados, el uso de un mapa en su lugar:

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

específicamente, la suma ya está predefinida, ¿no?

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

código de trabajo (a todos nos gusta el código de trabajo)

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

Para este caso trivial que es lo mismo que Range (3, 18).sum.

14

¿Qué tal esto?

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

Los objetos complementarios para varios tipos de colección tienen algunos métodos prácticos de fábrica. Pruebe:

Seq.fill(max)(generate) 
Cuestiones relacionadas