एक नहीं कह सकता आकार क्षेत्र आकार जहां वे सर्वत्र हैं और वे भी एमएल और हास्केल में बहुत आम हैं लिस्प के बाद से 50 वर्षों के लिए ही अस्तित्व में है बिना हटा दिया गया, सूची के रूप में दोनों स्केला में प्रभावशाली था,।
मूल कारण यह है कि सूची एक पुनरावर्ती संरचना है। एक खाली खाली List
Cons(head: A, tail: List[A])
है - सिवाय इसके कि Cons को वास्तव में सुविधाजनक इन्फिक्स नोटेशन की अनुमति देने के लिए ::
कहा जाता है। आप पूंछ (इसके मुख्य तत्व के बिना सूची) तक पहुंच सकते हैं और यह भी एक सूची है। और यह लगभग हर समय किया जाता है। तो सूची में गिनती होने का मतलब केवल एक पूर्णांक जोड़ना नहीं है, लेकिन तत्वों के रूप में कई पूर्णांक हैं। यह व्यवहार्य है, लेकिन निश्चित रूप से मुक्त नहीं है।
यदि आप जावा के LinkedList
, LinkedList
के साथ तुलना करते हैं तो एक पुनरावर्ती कार्यान्वयन (नोड पर आधारित है, जो विपक्ष की तरह कम या कम है, लेकिन दोनों दिशाओं में लिंक के साथ)। लेकिन एक लिंक्डलिस्ट एक नोड नहीं है, यह उनका मालिक है (और उनकी गिनती रखें)। इसलिए जब यह एक पुनरावर्ती कार्यान्वयन है, तो आप इसे दोबारा इलाज नहीं कर सकते हैं। यह आप एक लिंक्डलिस्ट के रूप में एक लिंक्डलिस्ट के पूंछ चाहते थे, आपको या तो सिर को हटाना होगा और अपनी सूची बदलनी होगी या अन्य सभी पूंछ तत्वों को एक नई लिंक्डलिस्ट में कॉपी करना होगा। तो स्कैला का List
और जावा का LinkedList
बहुत अलग संरचनाएं हैं।
स्रोत
2011-11-19 22:21:43
यह जावा में एक आकार() 'है, एक समारोह। – Kapep
लेकिन फ़ंक्शन को एक फ़ील्ड द्वारा समर्थित किया जाता है, जो इसे ओ (1) बनाता है। स्कैला सूची में ऐसा कोई क्षेत्र नहीं है, अच्छे कारण के लिए, लेकिन यह लंबाई ओ (एन) तक पहुंच बनाता है। –
"* पायथन * दोस्त" * जावा * पृष्ठभूमि से आता है? * पायथन * भाषा का संदर्भ नहीं देता है, है ना? – huynhjl