2011-08-23 12 views
6

में फ़ंक्शन द्वारा जेनरेट किए गए मानों के साथ एक सूची जेनरेट करें मुझे कुछ यादृच्छिक संख्याएं उत्पन्न करनी होंगी और उन्हें योगित करना होगा। जैसेस्कैला

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

तो generateList कुछ आकार = अधिकतम और मूल्यों generatorFunctionReturningInt

द्वारा उत्पन्न के साथ एक List उत्पन्न करता है या हो सकता है की तरह

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

उत्तर

4

सीधे शब्दों में

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

जहां max संख्या और यादृच्छिक श्रेणी के दोनों संख्या को परिभाषित करता है।

foreach विधि साइड-इफेक्ट फ़ंक्शंस (जैसे प्रिंटनल) के साथ उपयोग करने का इरादा है जो कुछ भी नहीं देता (Unit)।

0

foreach कुछ लौटने परिणाम के लिए नहीं है, उपयोग मानचित्र बजाय:

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

विशेष रूप से, योग पहले ही परिभाषित है, है ना?

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

काम कर कोड (हम काम कर कोड की तरह सभी)

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

इस तुच्छ मामले के लिए यह Range (3, 18).sum के समान है।

14

इस बारे में कैसे?

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

विभिन्न संग्रह प्रकारों के लिए साथी वस्तुओं में कुछ आसान फैक्ट्री विधियां हैं। आज़माएं:

Seq.fill(max)(generate)