স্কালা প্রোগ্রামিং ভাষায় ভ্যারিয়েবল দুটি ধরনের হয়: ইমিউটেবল (Immutable) এবং **মিউটেবল (Mutable)**। এগুলোর মধ্যে পার্থক্য এবং ব্যবহার স্কালার প্রোগ্রামিংয়ের মৌলিক ধারণাগুলির মধ্যে একটি। এখানে আপনি কীভাবে ইমিউটেবল এবং মিউটেবল ভ্যারিয়েবল ব্যবহার করতে পারেন এবং তাদের পার্থক্য কী তা সম্পর্কে বিস্তারিত আলোচনা করা হবে।
১. ইমিউটেবল ভ্যারিয়েবল (Immutable Variables)
ইমিউটেবল ভ্যারিয়েবল এমন একটি ভ্যারিয়েবল যার মান একবার অ্যাসাইন করার পর আর পরিবর্তন করা যায় না। স্কালায় ইমিউটেবল ভ্যারিয়েবল ঘোষণা করতে val কিওয়ার্ড ব্যবহার করা হয়। এই ধরনের ভ্যারিয়েবলগুলির মান পরিবর্তন করা সম্ভব নয়, এবং এটি কোডের নিরাপত্তা এবং সাইড-ইফেক্ট কমানোর জন্য উপকারী।
উদাহরণ:
object ImmutableVariableExample {
def main(args: Array[String]): Unit = {
val x = 10 // Immutable variable
println(x)
// Uncommenting the following line will result in a compile-time error
// x = 15 // Error: reassignment to val
}
}এখানে:
val x = 10: এটি একটি ইমিউটেবল ভ্যারিয়েবল যা একবার ১০ মান দিয়ে অ্যাসাইন করা হয়েছে এবং পরে তার মান পরিবর্তন করা যাবে না।x = 15: এই লাইনে পরিবর্তন করার চেষ্টা করলে কম্পাইল টাইমে এরর হবে।
ইমিউটেবল ভ্যারিয়েবল এর উপকারিতা:
- নিরাপত্তা: একবার একটি মান সেট হলে সেটি পরিবর্তন না হওয়ায় এটি কোডকে নিরাপদ করে তোলে।
- সাইড-ইফেক্ট কমানো: যখন একটি ভ্যারিয়েবল পরিবর্তনযোগ্য না হয়, তখন সাইড-ইফেক্ট কম হয় এবং ডিবাগিং সহজ হয়।
২. মিউটেবল ভ্যারিয়েবল (Mutable Variables)
মিউটেবল ভ্যারিয়েবল এমন একটি ভ্যারিয়েবল যার মান পরিবর্তন করা যায়। স্কালায় মিউটেবল ভ্যারিয়েবল ঘোষণা করতে var কিওয়ার্ড ব্যবহার করা হয়। মিউটেবল ভ্যারিয়েবলগুলো কোডে বেশি পরিবর্তনশীল এবং প্রোগ্রাম চলাকালীন তার মান পরিবর্তন করা সম্ভব।
উদাহরণ:
object MutableVariableExample {
def main(args: Array[String]): Unit = {
var y = 10 // Mutable variable
println(y)
y = 20 // Value of y can be changed
println(y)
}
}এখানে:
var y = 10: এটি একটি মিউটেবল ভ্যারিয়েবল যার মান ১০ দিয়ে শুরু করা হয়েছে।y = 20: এখানেyএর মান ২০ দিয়ে আপডেট করা হয়েছে, যেহেতু এটি একটি মিউটেবল ভ্যারিয়েবল।
মিউটেবল ভ্যারিয়েবল এর উপকারিতা:
- লচিলাত্ব: যখন কোনো ভ্যারিয়েবলের মান পরিবর্তন করতে হয়, তখন মিউটেবল ভ্যারিয়েবল ব্যবহার করা হয়।
- ডাইনামিক আচরণ: যদি প্রোগ্রামে কোনো ভ্যারিয়েবলের মান চলমান অবস্থায় পরিবর্তিত হতে হয়, তবে এটি মিউটেবল ভ্যারিয়েবল হওয়া উচিত।
৩. ইমিউটেবল এবং মিউটেবল ভ্যারিয়েবলের পার্থক্য
| বৈশিষ্ট্য | ইমিউটেবল ভ্যারিয়েবল (val) | মিউটেবল ভ্যারিয়েবল (var) |
|---|---|---|
| ভ্যারিয়েবলের মান পরিবর্তন | সম্ভব নয় | সম্ভব |
| ব্যবহার | সিস্টেমের নিরাপত্তা এবং নির্ভরযোগ্যতার জন্য ব্যবহৃত | যখন ডাটা পরিবর্তন করার প্রয়োজন হয় |
| সাইড-ইফেক্ট | কম সাইড-ইফেক্ট | বেশি সাইড-ইফেক্ট হতে পারে |
| ব্যবহার | যখন মানটি অপরিবর্তনীয় থাকতে হবে | যখন মান পরিবর্তন হতে পারে |
৪. কোডের মধ্যে ইমিউটেবল ও মিউটেবল ভ্যারিয়েবলের ব্যবহার
ইমিউটেবল ভ্যারিয়েবল ব্যবহার:
object ImmutableExample {
def main(args: Array[String]): Unit = {
val a = 100
val b = a + 50
println("a = " + a) // a = 100
println("b = " + b) // b = 150
}
}এখানে:
val a = 100: একবার অ্যাসাইন করা হয়েছে, তারপর এটির মান পরিবর্তন করা যাবে না।val b = a + 50: এখানেbএর মানaথেকে প্রাপ্ত মানের উপর ভিত্তি করে নির্ধারণ করা হয়েছে, কিন্তুaপরিবর্তনশীল নয়।
মিউটেবল ভ্যারিয়েবল ব্যবহার:
object MutableExample {
def main(args: Array[String]): Unit = {
var balance = 5000
println("Initial Balance: " + balance) // Initial Balance: 5000
balance = balance - 2000 // Balance updated
println("Updated Balance: " + balance) // Updated Balance: 3000
}
}এখানে:
var balance = 5000: এটি মিউটেবল ভ্যারিয়েবল, যার মান পরিবর্তন করা সম্ভব।balance = balance - 2000: ভ্যারিয়েবলের মান পরিবর্তন করা হচ্ছে।
সারাংশ
- ইমিউটেবল ভ্যারিয়েবল (
val): একবার মান সেট করার পর পরিবর্তন করা যায় না, যা কোডের নিরাপত্তা এবং নির্ভরযোগ্যতা নিশ্চিত করে। - মিউটেবল ভ্যারিয়েবল (
var): যার মান চলমান সময়ে পরিবর্তন করা যায়, যা ডাইনামিক কোড এবং ফাংশনের জন্য প্রয়োজনীয়।
স্কালায় যখন আপনি মান পরিবর্তন না করতে চান, তখন val ব্যবহার করবেন এবং যখন মান পরিবর্তন করতে চান তখন var ব্যবহার করবেন।
Read more