2012-02-21 13 views
7

मैंने कभी नहीं सोचा था कि मैं इस तरह के एक सरल प्रश्न पूछ सकता है लेकिन मैं कैसे स्केला में सरणी तत्व को अद्यतन करते हैंस्काला को अपडेट करने में सरणी तत्वों

मैं अपने मुख्य ऑब्जेक्ट के अंदर आंतरिक समारोह घोषणा की है और मैं इस

object Main 
{ 
    def main(args: Array[String]) 
    { 
     def miniFunc(num: Int) 
     { 
      val myArray = Array[Double](num) 
      for(i <- /* something*/) 
       myArray(i) = //something 
     } 
    } 
} 
की तरह कुछ है

लेकिन मुझे हमेशा अपवाद मिलता है, क्या कोई मुझे समझा सकता है कि मैं इस समस्या को कैसे हल कर सकता हूं?

+0

क्या मुझे थोड़ी कुछ समय है जब Arrays और स्काला में अन्य संग्रह तो एक ग्रहण करेंगे कि सरणी तत्वों को अद्यतन करने के लिए संभव नहीं है (स्काला काठी में जैसे जैसे अपरिवर्तनीय होने के लिए कहा जाता है confuses) लेकिन इसका वास्तव में क्या अर्थ है कि एक बार आयाम के रूप में बनाया गया हो सकता है लेकिन सामग्री हां नहीं ... –

+0

कई संग्रह स्कैला में अपरिवर्तनीय हैं, लेकिन Arrays केवल जावा Arrays हैं, और वे mutable हैं। –

उत्तर

11

क्या आप लापता विवरण भर सकते हैं? उदाहरण के लिए, टिप्पणियां कहां जाती हैं? अपवाद क्या है? (यह हमेशा एक पूरा कोड नमूने के साथ एक सवाल पूछने के लिए और यह स्पष्ट समस्या है क्या बनाने के लिए सबसे अच्छा है।)

यहाँ सरणी निर्माण और अद्यतन करने का एक उदाहरण है:

scala> val num: Int = 2 
num: Int = 2 

scala> val myArray = Array[Double](num) 
myArray: Array[Double] = Array(2.0) 

scala> myArray(0) = 4 

scala> myArray 
res6: Array[Double] = Array(4.0) 

शायद आप कर रहे हैं धारणा है कि num आपके सरणी के आकार का प्रतिनिधित्व करता है? वास्तव में, यह आपके सरणी में केवल (केवल) तत्व है। हो सकता है आप कुछ इस तरह थे:

def miniFunc(num: Int) { 
     val myArray = Array.fill(num)(0.0) 
     for(i <- 0 until num) 
      myArray(i) = i * 2 
    } 
+0

हाँ, मैंने सोचा कि संख्या एक सरणी के आकार का प्रतिनिधित्व करती है, धन्यवाद – user1224307

+1

@ user1224307 यदि आप 'नया' कीवर्ड का उपयोग करते हैं तो यह केवल आकार का प्रतिनिधित्व करता है। 'ऐरे (1, 2, 3)' तत्व 1, 2 और 3 के साथ सिर्फ एक सरणी है। –

+2

वर्थ इंगित करता है कि आप सरणी.tabulate के साथ सरणी प्रारंभ कर सकते हैं, उदाहरण के लिए Array.tabulate (10) (पहचान) देता है ऐरे [Int] (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) और Array.tabulate (10) (_ * 2) ऐरे देता है [Int] (0, 2, 4, 6 , 8, 10, 12, 14, 16, 18) –

संबंधित मुद्दे