আমি পার্থক্য যে মধ্যবর্তী Scala বিদ্যমান করে শুরু চাই Def , Val এবং Var ।
Def - ডান পাশের সামগ্রীর জন্য একটি অপরিবর্তনীয় লেবেল সংজ্ঞায়িত করে যা অলসভাবে মূল্যায়ন করা হয় - নাম দ্বারা মূল্যায়ন করুন।
ভাল - ডান পাশের সামগ্রীর জন্য একটি অপরিবর্তনীয় লেবেল সংজ্ঞায়িত করে যা উত্সাহ / তাত্ক্ষণিকভাবে মূল্যায়ন করা হয় - মান দ্বারা মূল্যায়ন করা হয়।
var - একটি পরিবর্তনীয় পরিবর্তনশীল সংজ্ঞা দেয় , প্রাথমিকভাবে মূল্যায়িত ডান পাশের সামগ্রীগুলিতে সেট করুন।
উদাহরণ, Def
scala> def something = 2 + 3 * 4
something: Int
scala> something // now it's evaluated, lazily upon usage
res30: Int = 14
উদাহরণ, ভাল
scala> val somethingelse = 2 + 3 * 5 // it's evaluated, eagerly upon definition
somethingelse: Int = 17
উদাহরণ, বর্ণ
scala> var aVariable = 2 * 3
aVariable: Int = 6
scala> aVariable = 5
aVariable: Int = 5
উপরে মতে, থেকে লেবেলগুলি Def এবং Val পুনরায় নির্ধারণ করা যাবে না, এবং কোন প্রয়াস ক্ষেত্রে নীচে মত একটি ত্রুটি উত্থাপিত হবে:
scala> something = 5 * 6
<console>:8: error: value something_= is not a member of object $iw
something = 5 * 6
^
ক্লাসটি যখন এর মতো সংজ্ঞায়িত হয়:
scala> class Person(val name: String, var age: Int)
defined class Person
এবং তারপরে তাত্ক্ষণিকভাবে:
scala> def personA = new Person("Tim", 25)
personA: Person
ব্যক্তির সেই নির্দিষ্ট উদাহরণের জন্য (যেমন 'personA') একটি অপরিবর্তনীয় লেবেল তৈরি করা হয়। যখনই পরিবর্তনযোগ্য ক্ষেত্র 'বয়স' সংশোধন করা দরকার, এ জাতীয় প্রচেষ্টা ব্যর্থ হয়:
scala> personA.age = 44
personA.age: Int = 25
প্রত্যাশিত হিসাবে, 'বয়স' একটি অ-পরিবর্তনীয় লেবেলের অংশ। এটির সাথে কাজ করার সঠিক উপায়টি নীচের উদাহরণের মতো একটি পরিবর্তনীয় ভেরিয়েবল ব্যবহারের সাথে জড়িত:
scala> var personB = new Person("Matt", 36)
personB: Person = Person@59cd11fe
scala> personB.age = 44
personB.age: Int = 44 // value re-assigned, as expected
পরিষ্কার হিসাবে, পরিবর্তনীয় পরিবর্তনশীল রেফারেন্স থেকে (অর্থাত্ 'personB') শ্রেণি পরিবর্তনযোগ্য ক্ষেত্র 'বয়স' পরিবর্তন করা সম্ভব।
আমি এখনও এই বিষয়টিকে জোর দিয়ে বলব যে সমস্ত কিছু উপরোক্ত বর্ণিত পার্থক্য থেকে এসেছে, এটি কোনও স্কালার প্রোগ্রামারকে মনে রাখতে হবে clear
val
পরিবর্তন করা যেতে পারে তবে একটি ভাল দ্বারা উল্লিখিত বস্তুটি পারে না। কval
একটি ধ্রুবক নয়।