मैं कार्यात्मक प्रोग्रामिंग भाषा के लिए नौसिखिया हूं और मैं इसे विश्वविद्यालय परियोजना के लिए स्कैला में सीख रहा हूं।स्कैला - ऐरे [स्ट्रिंग] को ऐरे में परिवर्तित करें [डबल]
यह आसान प्रतीत हो सकता है, लेकिन मैं इस के लिए पर्याप्त सहायता पाने में असमर्थ हूं या ऐसा करने का एक सीधा तरीका - मैं एक ऐरे [स्ट्रिंग] को ऐरे [डबल] में कैसे परिवर्तित कर सकता हूं? मेरे पास एक सीएसवी फ़ाइल है जो, जब आरईपीएल में पढ़ा जाता है तो स्ट्रिंग मानों के रूप में व्याख्या की जाती है (फ़ाइल की प्रत्येक पंक्ति में पूर्णांक और स्ट्रिंग मानों का मिश्रण होता है) जो एक प्रकार ऐरे [स्ट्रिंग] लौटाएगा। सरणी को सजातीय बनाने के लिए मैं स्ट्रिंग मानों को दोहरी/int मानों के साथ एरे [डबल] वापस करने के लिए एन्कोड करना चाहता हूं। क्या ऐसा करने का एक सीधा तरीका है? किसी भी मार्गदर्शन की सराहना की जाएगी।
मैं अब तक क्या किया है:
def retrieveExamplesFromFile(fileName : String) : Array[Array[String]] = {
val items = for {
line <- Source.fromFile(fileName).getLines()
entries = line.split(",")
} yield entries
return items.toArray
}
प्रत्येक पंक्ति (String [] के रूप में वापस) के प्रारूप इतना है:
[[1.0, 2.0, item1], [5, 8.9, item2],....]
और CSV फ़ाइल में प्रत्येक पंक्ति कन्वर्ट करने के लिए डबल सरणी में, मेरे पास केवल एक psuedo परिभाषा तैयार की गई है:
def generateNumbersForStringValues(values : Array[String]) : Array[Double] = {
val line = for(item <- values)
{
//correct way?
item.replace("item1", "1.0")
item.replace("item2", "1.0")
}
return //unable to typecast/convert
}
किसी भी विचार का स्वागत है। आपके समय के लिए शुक्रिया।
GetOrElse कथन या पैटर्न मिलान मेरे लिए सबसे अच्छा काम करता है। हालांकि, मैं जानना चाहता था कि क्या मैं हर समय सिर्फ 1.0 लौटने के बजाय इसका सामना कर सकता हूं? मैंने रेंज (एन 1, एन 2) के बारे में सुना है, लेकिन यह वह नहीं है जिसे मैं ढूंढ रहा हूं, मैं एक काउंटर की तलाश में हूं क्योंकि मैं item1 और item2 को अलग-अलग (शायद लगातार) संख्याएं चाहता हूं। क्या यह संभव है? –
निश्चित - आप 'getOrElse' खंड में जो भी तर्क चाहते हैं उसे डाल सकते हैं। उदाहरण के लिए, आप एक इटरेटर 'वैल फॉलबैकइटरेटर = इटरेटर.फॉम (0)' बना सकते हैं, और उसके बाद 'getOrElse (fallbackIterator.next)' का उपयोग करें, ताकि प्रत्येक getive कॉल 'getOrElse' में फॉलबैक वैल्यू बढ़ेगा। –
मैं उस मोनाद की कोशिश कर रहा था: scala.util में नहीं पता था। वी यहाँ सुंदर जवाब। – javadba