Scala

2011-08-23 29 views
6

'daki işlev tarafından oluşturulan değerlere sahip bir liste oluşturun Bazı rasgele sayılar oluşturmalı ve bunları toplamalıyım.Scala

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

generateList Eğer gibi bir şey boyutuna = max ve değerler generatorFunctionReturningInt

tarafından üretilen bir List üretir Ya

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

cevap

4

Bunun

max sayı ve rasgele aralığının her iki sayısını tanımlar
(0 to max).map(_ => (new util.Random).nextInt(max)).sum 

. Hiçbir şey (Unit) döndüren yan etki işlevleri (println gibi) ile kullanılması amaçlanan yöntem

foreach.

0

foreach gibi bir şey dönen sonuçları için değildir olabilir kullanım haritası yerine:

( )özellikle, toplam önceden tanımlanmış, değil mi? Bu önemsiz durum için

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

çalışma kodu (çalışma kodu gibi hepimiz)

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

o Range (3, 18).sum aynıdır.

14

Bu nasıl? Çeşitli koleksiyon türleri bazı kullanışlı fabrika yöntemleri var için

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

arkadaşı nesneleri. Deneyin:

Seq.fill(max)(generate)