2012-02-23 11 views
28

का एक प्रकार parametrized सरणी बनाने:स्काला - अगर में स्काला आईडीई निम्न प्रयास निर्दिष्ट लंबाई

val chars = Array[Char](256) 

यह सब ठीक है। लेकिन अगर मैं ऐसा करते हैं:

val len = 256 
val chars = Array[Char](len) 

यह कहना है कि यह एक Char बजाय len उम्मीद? क्यूं कर? मैं व्यवहार की अपेक्षा करता हूं! ऐसा क्यों लगता है कि मैं उस आकार को निर्दिष्ट करने के बजाय उस चीज़ को सरणी में रखना चाहता हूं? जहां तक ​​मुझे पता है, ऐसे सरणी के लिए कोई कन्स्ट्रक्टर नहीं है जो इसे सरणी के अंदर रखने के लिए एक तर्क लेता है।

उत्तर

51
val chars = Array[Char](256) 

यह काम करता है क्योंकि 256, एक Char माना जाता है और यह

val len = 256 
val chars = Array[Char](len) 

यहाँ लेन Int है (कोड 256) के साथ एक-तत्व वाली सरणी बनाता है तो यह विफल रहता है

की सरणी बनाने के लिए निर्दिष्ट आकार आपको इस तरह की कुछ चाहिए

val chars = Array.fill(256){0} 

val chars = new Array[Char](256) 
+4

यदि ऐरे की सामग्री कोई फर्क नहीं पड़ता है तो आप भरने के बजाय नए का उपयोग भी कर सकते हैं: 'वैल वर्ण = नया ऐरे [चार] (256)' – MxFr

24

उपयोग Array.ofDim[Char](256): जहां {0} एक समारोह सरणी की सामग्री को कोई फर्क नहीं करते हैं तो आप भी fill के बजाय new उपयोग कर सकते हैं तत्वों

उत्पादन होता है।

इसके अलावा, यह आपके प्रश्न को stackoverflow पर पोस्ट करने से पहले API docs को देखने में मदद करता है।