প্রথমত, তারা সবাই অ-কঠোর । এটির সাথে ফাংশন সম্পর্কিত একটি নির্দিষ্ট গাণিতিক অর্থ রয়েছে তবে মূলত এর অর্থ তারা আগাম পরিবর্তে অন ডিমান্ডে গণিত হয়।
Streamসত্যিই একটি অলস তালিকা। বস্তুত, Scala, একটি Streamএকটি হল Listযার tailএকটি হল lazy val। একবার গণনা করা হলে, একটি মান গণনা করে আবার ব্যবহার করা হয়। বা, যেমন আপনি বলেছেন, মানগুলি ক্যাশেড।
একটি Iteratorকেবল একবার ব্যবহার করা যেতে পারে কারণ এটি কোনও সংগ্রহে ট্র্যাভার্সাল পয়েন্টার , এবং নিজেই সংগ্রহ নয়। এটা কি Scala মধ্যে বিশেষ করে তোলে যে আপনি যেমন রূপান্তর আবেদন করতে পারেন হয় mapএবং filterএবং কেবল একটি নতুন পেতে Iteratorযা শুধুমাত্র এই রূপান্তরের প্রযোজ্য হবে যখন আপনি পরবর্তী উপাদান জন্য জিজ্ঞাসা করুন।
স্কেল পুনরায় সেট করা যেতে পারে যা পুনরাবৃত্তকারী প্রদান করত, তবে এটি সাধারণ পদ্ধতিতে সমর্থন করা খুব শক্ত এবং তারা সংস্করণ ২.৮.০ তৈরি করেনি।
ভিউগুলি অনেকটা একটি ডাটাবেস দর্শনের মতো দেখতে বোঝানো হয়। এটি রূপান্তর একটি সিরিজ যা একটি "ভার্চুয়াল" সংগ্রহ উত্পাদন করতে সংগ্রহের জন্য প্রযোজ্য। যেমনটি আপনি বলেছিলেন, প্রতিবার এটি থেকে উপাদান আনার জন্য সমস্ত রূপান্তরগুলি পুনরায় প্রয়োগ করা হয়।
উভয় Iteratorএবং মতামতের দুর্দান্ত স্মৃতি বৈশিষ্ট্য রয়েছে। Streamদুর্দান্ত, তবে, স্কালায়, এর মূল উপকারটি হ'ল অসীম অনুক্রমগুলি (বিশেষত ক্রমগুলি পুনরাবৃত্তভাবে সংজ্ঞায়িত) writing এক করতে সব পালন এড়ানোর Streamনিশ্চিত করুন যে আপনি তার একটি রেফারেন্স রাখি না করে যদিও, মেমরি, head(উদাহরণস্বরূপ, ব্যবহার করে defপরিবর্তে valসংজ্ঞায়িত করতে Stream)।
দর্শনগুলির দ্বারা প্রদত্ত জরিমানার কারণে, সাধারণত forceরূপান্তর প্রয়োগের পরে এটি হওয়া উচিত , বা যদি ভিউর মোট আকারের তুলনায় কেবলমাত্র কয়েকটি উপাদানই পাওয়া যায় বলে আশা করা হয় তবে এটিকে দৃশ্য হিসাবে রাখা উচিত।