समारोह getRandomString
नीचे वर्णों की एक सूची से एक यादृच्छिक स्ट्रिंग उत्पन्न करता है?इस स्काला में एक शुद्ध समारोह
उत्तर
नहीं, क्योंकि यह वास्तव में राज्य को संशोधित करता है। new scala.util.Random
अंततः new java.util.Random
का आह्वान करता है, जो स्थिर (यानी वैश्विक) को एक्सेस और संशोधित करता है, AtomicLong
को seedUniquifier
कहा जाता है। और इसलिए यदि इस विधि को कई बार कहा जाता है तो परिणाम बदल जाएगा।
यह एक अच्छा उदाहरण है कि कैसे निर्दोष दिखने वाले तरीके वैश्विक परिवर्तनीय स्थिति तक पहुंच को छुपा सकते हैं, जिसे हास्केल जैसी कठोर कार्यात्मक भाषा में मना किया जाएगा (हालांकि वह दृष्टिकोण अपनी समस्याओं के साथ आता है)।
नहीं क्योंकि new scala.util.Random().nextInt ...
रिटर्न कुछ अलग हर बार है, जो cogently Imm द्वारा समझाया गया है।
फिर भी आप बस एक बीज में पारित कर सकते हैं तो यह एक शुद्ध समारोह होगा, क्योंकि यह एक ही यादृच्छिक स्ट्रिंग हर बार वापस आ जाएगी। आप बीज को पैरामीटर के रूप में जोड़ सकते हैं या इसे यादृच्छिक स्ट्रिंग विधि के अंदर ठीक कर सकते हैं।
अंत में, मैंने देखा है कि आपने यादृच्छिक स्ट्रिंग उत्पन्न करने के लिए बड़ी संख्या में कोड लिखा है। मेरा सुझाव है कि आप स्कैला चेक देखें, जिसमें यादृच्छिक सामान (यूनिट परीक्षणों के लिए) उत्पन्न करने के लिए उपयोगी कार्यों का ढेर है, String
आउट-ऑफ-बॉक्स आता है।
आप एक पुस्तकालय में खींचने के लिए नहीं करना चाहते हैं, तो आप अभी भी उस कोड और अधिक संक्षिप्त कर सकते हैं:
def randomString(fromChars: List[Char], length: Int): String = {
val rand = new Random(1234) // Now it's pure functional because the seed is fixed
val fromCharsSize = fromChars.size // to save us repeatedly counting
List.fill(length)(fromChars(rand.nextInt(fromCharsSize))).mkString
}
यह एक ही मान देता है हर बार निरीक्षण करें
scala> randomString("asdf".toList, 10)
res0: String = dsfafssdsa
scala> randomString("asdf".toList, 10)
res1: String = dsfafssdsa
- 1. चेकिंग समारोह स्काला
- 2. स्काला समारोह परिवर्तन
- 3. स्काला को रेखांकित न्यूनतम समारोह
- 4. इस स्काला कोड
- 5. क्यों मैं इस स्काला
- 6. अंतर? इस समारोह में
- 7. प्रतिक्रिया: "इस" एक घटक समारोह
- 8. jQuery पासिंग $ (इस) एक समारोह
- 9. इस प्रकार अगर मैं एक समारोह है कैसे एक समारोह
- 10. एक समारोह
- 11. इस तरह स्काला पकड़ने भ्रम
- 12. छोटे शुद्ध समारोह को समानांतर कैसे करें?
- 13. शुद्ध आभासी समारोह कॉल दिलचस्प मामलों
- 14. एक समारोह के अंदर कई सूचियाँ संशोधन और उनका स्काला
- 15. स्काला को रेखांकित - त्रुटि: विस्तार समारोह
- 16. एफ #: इस समारोह
- 17. PHP से इस समारोह
- 18. हास्केल और शुद्ध समारोह के Memoization परिणाम
- 19. स्काला गुमनाम समारोह के साथ बदलें regex
- 20. SQLGetInfo - इस समारोह
- 21. स्काला समारोह => क्यों निम्नलिखित पैरामीटर
- 22. Vue js:। केवल इस $ फेंकना एक समारोह
- 23. इस तीर समारोह
- 24. स्काला अप्रत्याशित रूप से नहीं विस्तार समारोह
- 25. andthen स्काला में दो तर्क के समारोह के लिए
- 26. नक्शा समारोह के बराबर स्काला में 'उपज' है?
- 27. कैसे इस उदाहरण में जावास्क्रिप्ट समारोह
- 28. इस समारोह में विपक्ष क्या करता है?
- 29. स्काला
- 30. सजावटी के साथ एक शुद्ध समारोह के रूप में मैं एक प्रतिक्रिया घटक कैसे लिखूं?
"अपने तर्क अगर एकाधिक कॉल के बीच नहीं बदलता है तो इसका परिणाम नहीं बदलेगा। " - क्या आप इसका एक उदाहरण दिखा सकते हैं? मुझे पूरा यकीन है कि यह सच नहीं है, लेकिन मैं इसका परीक्षण नहीं कर सकता क्योंकि आपका कोड संकलित नहीं होता है। –
@ जोर्ग डब्ल्यू मिट्टाग आपका अधिकार बदल जाएगा परिणाम, ive ने इस वाक्य को हटा दिया। यह कोड संदर्भित पारदर्शी नहीं है। यह कोड ईक्लीप्स केप्लर स्काला संस्करण 2.11 –
'त्रुटि का उपयोग कर वर्कशीट में मेरे लिए संकलित करता है: नहीं मिला: मान genRandomInt'। यह स्कैला MATLAB बाध्यकारी से एक विधि प्रतीत होता है? लेकिन मेरे पास MATLAB नहीं है। –