Swift-এ ইনিশিয়ালাইজার এবং ডিনিশিয়ালাইজার
Swift-এ ইনিশিয়ালাইজার এবং ডিনিশিয়ালাইজার অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের দুটি গুরুত্বপূর্ণ অংশ, যা ক্লাস বা স্ট্রাক্ট অবজেক্ট তৈরি ও মুছে ফেলার সময় ব্যবহৃত হয়। ইনিশিয়ালাইজার অবজেক্ট তৈরি করার সময় প্রোপার্টিজ সেট করতে সাহায্য করে, আর ডিনিশিয়ালাইজার অবজেক্ট ধ্বংস করার সময় নির্দিষ্ট কাজ করতে ব্যবহৃত হয়।
ইনিশিয়ালাইজার (Initializer)
ইনিশিয়ালাইজার একটি বিশেষ মেথড, যা ক্লাস, স্ট্রাক্ট, বা এনাম-এর একটি নতুন ইনস্ট্যান্স তৈরি করার সময় কল করা হয়। এটি অবজেক্টের প্রোপার্টিজগুলির প্রাথমিক মান সেট করতে এবং প্রয়োজনীয় কাজ করতে ব্যবহৃত হয়। Swift-এ ইনিশিয়ালাইজারকে init কীওয়ার্ড দিয়ে ডিফাইন করা হয়।
ইনিশিয়ালাইজারের বৈশিষ্ট্য
- ইনিশিয়ালাইজার ডিফল্টভাবে কোনো রিটার্ন টাইপ রাখে না।
- ইনিশিয়ালাইজার এক বা একাধিক প্যারামিটার গ্রহণ করতে পারে।
- Swift-এ ক্লাস বা স্ট্রাক্টের জন্য একটি ডিফল্ট ইনিশিয়ালাইজার থাকে, তবে আপনি কাস্টম ইনিশিয়ালাইজারও তৈরি করতে পারেন।
উদাহরণ: স্ট্রাক্টে ইনিশিয়ালাইজার
struct Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
let person = Person(name: "Alice", age: 25)
print("Name: \(person.name), Age: \(person.age)")
এখানে, Person স্ট্রাক্টের একটি ইনিশিয়ালাইজার ডিফাইন করা হয়েছে, যা name এবং age প্রোপার্টিজের মান সেট করতে ব্যবহৃত হয়েছে। যখন Person এর একটি নতুন ইনস্ট্যান্স তৈরি করা হয়, তখন ইনিশিয়ালাইজার এই প্রোপার্টিজগুলির মান সেট করে।
উদাহরণ: ক্লাসে ইনিশিয়ালাইজার
class Car {
var brand: String
var model: String
var year: Int
init(brand: String, model: String, year: Int) {
self.brand = brand
self.model = model
self.year = year
}
}
let myCar = Car(brand: "Toyota", model: "Corolla", year: 2020)
print("Brand: \(myCar.brand), Model: \(myCar.model), Year: \(myCar.year)")
এখানে, Car ক্লাসের একটি ইনিশিয়ালাইজার ডিফাইন করা হয়েছে, যা তিনটি প্যারামিটার গ্রহণ করে এবং অবজেক্টের প্রোপার্টিজ সেট করে।
ডিফল্ট ইনিশিয়ালাইজার এবং কাস্টম ইনিশিয়ালাইজার
- ডিফল্ট ইনিশিয়ালাইজার: যদি কোনো ইনিশিয়ালাইজার না দেওয়া হয়, Swift একটি ডিফল্ট ইনিশিয়ালাইজার তৈরি করে।
- কাস্টম ইনিশিয়ালাইজার: যখন আপনার প্রোপার্টিজগুলো কাস্টম ভ্যালু দিয়ে ইনিশিয়ালাইজ করতে হয় বা কিছু নির্দিষ্ট কাজ করতে হয়, তখন আপনি কাস্টম ইনিশিয়ালাইজার তৈরি করতে পারেন।
ফেইলেবল ইনিশিয়ালাইজার (Failable Initializer)
Swift-এ আপনি একটি ফেইলেবল ইনিশিয়ালাইজারও তৈরি করতে পারেন, যা ইনিশিয়ালাইজেশন ব্যর্থ হলে nil রিটার্ন করে। এটি init? সিনট্যাক্স দিয়ে ডিফাইন করা হয়।
struct Product {
var name: String
var price: Double
init?(name: String, price: Double) {
if price < 0 {
return nil
}
self.name = name
self.price = price
}
}
if let product = Product(name: "Laptop", price: -1500) {
print("Product: \(product.name), Price: \(product.price)")
} else {
print("Invalid product price.")
}
এখানে, যদি প্রাইস নেগেটিভ হয়, তাহলে ইনিশিয়ালাইজার nil রিটার্ন করে, যা একটি অবৈধ অবজেক্ট তৈরি হতে বাধা দেয়।
ডিনিশিয়ালাইজার (Deinitializer)
Swift-এ ডিনিশিয়ালাইজার একটি বিশেষ মেথড, যা ক্লাসের একটি ইনস্ট্যান্স ধ্বংস হওয়ার সময় স্বয়ংক্রিয়ভাবে কল করা হয়। এটি deinit কীওয়ার্ড দিয়ে ডিফাইন করা হয় এবং এটি সাধারণত মেমোরি রিসোর্স রিলিজ করার জন্য ব্যবহৃত হয়। ডিনিশিয়ালাইজার শুধুমাত্র ক্লাসে থাকে, স্ট্রাক্ট বা এনাম-এ থাকে না।
ডিনিশিয়ালাইজারের বৈশিষ্ট্য
- ডিনিশিয়ালাইজারের কোনো প্যারামিটার বা রিটার্ন টাইপ থাকে না।
- এটি শুধুমাত্র ক্লাসের জন্য প্রযোজ্য।
- একটি অবজেক্ট মেমোরি থেকে সরানোর আগে ডিনিশিয়ালাইজার কল করা হয়।
উদাহরণ: ডিনিশিয়ালাইজার ব্যবহার
class FileHandler {
var fileName: String
init(fileName: String) {
self.fileName = fileName
print("\(fileName) is opened.")
}
deinit {
print("\(fileName) is closed.")
}
}
if true {
let file = FileHandler(fileName: "data.txt")
// এখানে ফাইল হ্যান্ডলার ব্যবহার করা হচ্ছে
}
// যখন অবজেক্ট মেমোরি থেকে সরানো হবে, তখন deinit কল হবে।
আউটপুট:
data.txt is opened.
data.txt is closed.
এখানে, FileHandler ক্লাসের ডিনিশিয়ালাইজার অবজেক্ট ধ্বংস হওয়ার সময় প্রিন্ট করবে। কোড ব্লকের শেষে (এখানে if true ব্লক) অবজেক্টটি মেমোরি থেকে মুছে ফেলা হয় এবং ডিনিশিয়ালাইজার স্বয়ংক্রিয়ভাবে কল হয়।
উপসংহার
- ইনিশিয়ালাইজার (Initializer): Swift-এ অবজেক্ট তৈরি করার সময় প্রোপার্টিজ সেট এবং অন্যান্য প্রাথমিক কাজ করতে ব্যবহৃত হয়। ইনিশিয়ালাইজার কাস্টমাইজ করা যায় এবং এমনকি ফেইলেবল ইনিশিয়ালাইজারও তৈরি করা যায়।
- ডিনিশিয়ালাইজার (Deinitializer): একটি ক্লাসের অবজেক্ট মেমোরি থেকে সরানোর সময় স্বয়ংক্রিয়ভাবে কল হয় এবং এটি সাধারণত মেমোরি ক্লিনআপ বা রিসোর্স রিলিজ করার জন্য ব্যবহৃত হয়।
Swift-এ ইনিশিয়ালাইজার এবং ডিনিশিয়ালাইজার প্রোগ্রামিং প্রক্রিয়াকে আরও কার্যকর এবং নিরাপদ করে, কারণ এটি ডেটা সেটআপ এবং ক্লিনআপ উভয় ক্ষেত্রেই নিয়ন্ত্রণ দেয়।
Read more