कोर्स
आप निम्नलिखित ट्यूटोरियल्स में रुचि ले सकते हैं:
परिचय
एक सिंगली लिंक्ड लिस्ट संरचना, जो 3 पूर्णांक तत्वों वाली सूची को लागू करती है (स्रोत: Wikipedia - List (abstract data type)).
सामान्य रूप से, एक सूची अमूर्त डेटा प्रकारों का अनुक्रम होती है जो निश्चित संख्या में मानों का प्रतिनिधित्व करती है। मानों को किसी प्रोग्राम द्वारा प्रोग्रामेटिक रूप से बदला जा सकता है और वे सूची में एक से अधिक बार भी आ सकते हैं। सूची का एक उदाहरण ऊपर दिए गए चित्र में एक सिंगली लिंक्ड लिस्ट के रूप में दिखाया गया है जिसमें तीन पूर्णांक मान हैं। सूची को एक डेटा संरचना भी माना जाता है, और डेटा संरचना के रूप में सूची का एक उदाहरण लिंक्ड लिस्ट्स हैं।
कई प्रोग्रामिंग भाषाएँ सूचियों के लिए समर्थन प्रदान करती हैं, और एक ऐसा उदाहरण जहाँ लोग सूचियों का व्यापक रूप से उपयोग करते हैं, वह Python है। अक्सर किसी अनुक्रम में आइटमों को अल्पविराम, सेमीकोलन या स्पेस से अलग करके तथा किसी जोड़ी डिलिमिटर जैसे कोष्ठक (), ब्रैकेट [], ब्रेसेस {}, या कोणीय ब्रैकेट <> के भीतर लिखकर सूची बनाई जा सकती है। कुछ भाषाएँ जैसे Python सूची प्रकारों को array प्रकारों की तरह इंडेक्स या slice करने की अनुमति दे सकती हैं, ऐसे में डेटा प्रकार को अधिक सटीक रूप से एक array कहा जाता है (स्रोत: Wikipedia - List (abstract data type)).
विशेष रूप से Scala में, सूची एक collection है जिसमें immutable डेटा होता है, अर्थात एक बार सूची बनने के बाद उसे बदला नहीं जा सकता। Scala में, सूची एक linked list को दर्शाती है।
Scala सूची में, प्रत्येक तत्व का एक ही डेटा प्रकार होना आवश्यक नहीं है। Scala सूचियों का इम्प्लिमेंटेशन निर्माण चरण के दौरान आंतरिक रूप से एक mutable state का उपयोग करता है। Scala में, सूची scala.collection.immutable पैकेज के अंतर्गत परिभाषित है और इसलिए वे immutable होती हैं। अंततः, Scala List में add, prepend, max, min आदि जैसे विभिन्न मेथड होते हैं।
Scala List परिभाषित करने का सिंटैक्स
val variable_name: List[type] = List(item1, item2, item3) या val variable_name = List(item1, item2, item3) Scala में सूची अधिकांशतः Scala array जैसी होती है। हालांकि, Scala List immutable होती है और एक linked list डेटा संरचना का प्रतिनिधित्व करती है। दूसरी ओर, Scala array सपाट (flat) और mutable होती है।
आइए उपरोक्त अंतर को एक उदाहरण से तुरंत समझते हैं।
Scala List बनाम Scala Array
पहले Scala में एक array परिभाषित करते हैं।
फिर आप 1st इंडेक्स पर मान को संशोधित करेंगे (क्योंकि Scala arrays शून्य-इंडेक्स्ड होते हैं) और देखेंगे कि क्या आप इसे अपडेट कर सकते हैं।

तो, जैसा कि ऊपर दिए गए कोड स्निपेट से दिखता है, Scala array ने आपको 1st इंडेक्स पर मान संशोधित करने दिया।
अब, आप एक Scala List परिभाषित करेंगे और ऊपर जैसा ही करने की कोशिश करेंगे।

ऊपर के उदाहरण से आप निष्कर्ष निकाल सकते हैं कि चूँकि Scala Lists immutable होती हैं, इसलिए मान अपडेट करने पर त्रुटि हुई।
Scala List मेथड्स
-
head: यह मेथड Scala सूची का पहला तत्व लौटाता है।
-
tail: यह मेथड पहले को छोड़कर बाकी सभी तत्व लौटाता है।
-
isEmpty: यह मेथड जाँचता है कि सूची खाली है या नहीं; खाली होने पर True अन्यथा False लौटाता है।
-
fill(): यह मेथड निर्दिष्ट तत्व की शून्य या अधिक प्रतियों से बनी एक समान (uniform) सूची बनाता है।
-
reverse: यह मेथड सूची के तत्वों का क्रम उलट देता है।
-
$:::$ या $.:::$ या .concat(): दो या अधिक सूचियों को जोड़ता है।
-
tabulate(): यह मेथड सूची को tabulate कर सकता है। यह भावना में
fill()मेथड के समान है, लेकिनfill()के विपरीत, यह दो आर्गुमेंट लेता है। पहला आर्गुमेंट बनने वाली सूची के आयाम देता है, जबकि दूसरा सूची के तत्वों का वर्णन करता है, जिन्हें एक फ़ंक्शन से गणना किया जाता है।
यदि ऊपर दिए गए कुछ मेथड अभी पूरी तरह स्पष्ट नहीं हैं तो चिंता न करें, क्योंकि आप इन्हें उदाहरण की मदद से Scala में लागू करेंगे; लेकिन उससे पहले, Scala Lists को परिभाषित करना सीखते हैं।
आप strings, integers (1D और 2D दोनों) डेटा प्रकारों के साथ Scala List बनाएँगे। आप ऐसी सूची बनाना भी सीखेंगे जिसमें strings और integers दोनों शामिल हों।
1-D Integer List

1-D List जिसमें Integer और String दोनों हों

1-D String List

2-D List

सूचियों पर अंकगणितीय ऑपरेशन
इस उदाहरण में, आप केवल वेरिएबल्स परिभाषित करने के बजाय सूचियों का उपयोग करेंगे। किसी वेरिएबल के विपरीत, एक सूची में n संख्या में मान हो सकते हैं; आप दो वेरिएबल्स के बजाय दो सूचियों पर अंकगणितीय ऑपरेशन करेंगे।
तो, आइए जल्दी से सीखते हैं कि यह कैसे किया जा सकता है।
अंकगणितीय ऑपरेशन लागू करने के लिए, आप zipped.map फ़ंक्शन का उपयोग करेंगे, जिसके बाद सूचियाँ x और y होंगी। फिर आप zipped.map मेथड में आर्गुमेंट के रूप में वह ऑपरेशन निर्दिष्ट करेंगे जिसे आप करना चाहते हैं।


अंत में, आइए एक कोड लिखते हैं जिसमें ये सभी मेथड्स होंगे।
object Scala_List_Methods
{
def main(args: Array[String])
{
// define two lists
val x = List(1, 40, 10)
val y = List(20, 25, 30)
val z = List("DataCamp", "Tutorials", "Are", "The", "Best")
//Head
println();
println("Head of list x, y, z = " + (x.head, y.head, z.head));
println();
//Tail
println("Tail of list x, y, z = " + (x.tail, y.tail, z.tail));
println();
//isEmpty
println("Is list x, y, z empty? = " + (x.isEmpty, y.isEmpty, z.isEmpty));
println();
//Concatenate
println("Concatenating x, y, z lists with the first method = " + (x:::y:::z));
println("Concatenating x, y, z lists with the second method = " + ((x).:::(y).:::(z)));
println("Concatenating x, y, z lists with the third method = " + (List.concat(x,y,z)));
println();
//Reverse
println("Reverse of x, y, z is = " + (x.reverse, y.reverse, z.reverse));
println();
//Fill
println("Output of Fill method is = " + (List.fill(5)(z)));
println();
//Tabulate
println("Output of Tabulate method is = " + (List.tabulate(5)(x => x * x * x)));
}
}

निष्कर्ष
इस Scala ट्यूटोरियल को पूरा करने पर बधाई।
कृपया नीचे दिए गए टिप्पणियों अनुभाग में इस ट्यूटोरियल से संबंधित कोई भी प्रश्न बेझिझक पूछें।