2011-08-23 13 views
6

Devo generare alcuni numeri casuali e sommarli. Qualcosa di simileGenerare una lista con valori generati dalla funzione in Scala

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

Se generateList genera un List con size = max e valori generati da generatorFunctionReturningInt

o può essere qualcosa di simile

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

risposta

4

Semplicemente

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

dove max definisce sia il numero dei numeri e gamma casuali.

foreach metodo destinato all'uso con funzioni di effetti collaterali (come println) che non restituisce nulla (Unit).

0

foreach non è per i risultati di ritorno, utilizzo carta invece:

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

in particolare, la somma è già predefinita, non è vero?

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

codice di lavoro (tutti come codice di lavoro)

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

Per questo banale è lo stesso come Range (3, 18).sum.

14

Che ne dici di questo?

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

Gli oggetti complementari per vari tipi di raccolta hanno alcuni metodi di fabbrica pratici. Prova:

Seq.fill(max)(generate) 
Problemi correlati