স্ট্রাক্ট কী এবং এর ব্যবহার

স্ট্রাক্ট এবং এনাম - সুইফট প্রোগ্রামিং (Swift Programming) - Computer Programming

251

Swift-এ স্ট্রাক্ট (Struct) হলো একটি ডেটা স্ট্রাকচার, যা ক্লাসের মতোই বিভিন্ন প্রোপার্টি এবং মেথড ধারণ করতে পারে। তবে, স্ট্রাক্ট হলো ভ্যালু টাইপ, যেখানে ক্লাস হলো রেফারেন্স টাইপ। স্ট্রাক্ট ব্যবহার করে আপনি সহজে ডেটার একটি কাস্টম টাইপ তৈরি করতে পারেন, যা Swift-এর বিল্ট-ইন ডেটা টাইপের মতোই কাজ করে। স্ট্রাক্ট সাধারণত ছোট এবং সাধারণ ডেটা মডেল তৈরির জন্য ব্যবহার করা হয়।

স্ট্রাক্ট কী?

স্ট্রাক্ট হলো এক ধরনের ডেটা স্ট্রাকচার, যা ভেরিয়েবল এবং ফাংশনকে একত্রিত করে। স্ট্রাক্ট তৈরি করতে struct কীওয়ার্ড ব্যবহার করা হয়। স্ট্রাক্ট ভ্যালু টাইপ হওয়ায়, এটি একটি ভেরিয়েবল বা কনস্ট্যান্টে অ্যাসাইন বা পাস করার সময় কপি তৈরি করে, যেখানে ক্লাস রেফারেন্স হিসেবে কাজ করে।

স্ট্রাক্টের গঠন

struct StructName {
    // প্রোপার্টি
    var property1: Type
    var property2: Type
    
    // মেথড
    func methodName() {
        // কার্যক্রম
    }
}
  • struct: স্ট্রাক্ট ডিফাইন করার জন্য কীওয়ার্ড।
  • প্রোপার্টি: স্ট্রাক্টের বৈশিষ্ট্য বা ডেটা, যা সাধারণত ভেরিয়েবল বা কনস্ট্যান্ট হিসেবে থাকে।
  • মেথড: স্ট্রাক্টের কার্যক্রম বা ফাংশন, যা ফাংশন আকারে ডিফাইন করা হয়।

একটি স্ট্রাক্ট উদাহরণ

struct Person {
    var name: String
    var age: Int
    
    func greet() {
        print("Hello, my name is \(name) and I am \(age) years old.")
    }
}

// স্ট্রাক্ট থেকে অবজেক্ট তৈরি
let person1 = Person(name: "Alice", age: 25)
person1.greet()  // Output: "Hello, my name is Alice and I am 25 years old."
  • এখানে, Person নামের একটি স্ট্রাক্ট ডিফাইন করা হয়েছে, যা name এবং age নামে দুটি প্রোপার্টি ধারণ করে এবং একটি মেথড greet() রয়েছে।
  • person1 হলো Person স্ট্রাক্ট থেকে তৈরি করা একটি অবজেক্ট।

ভ্যালু টাইপের বৈশিষ্ট্য

স্ট্রাক্ট Swift-এ ভ্যালু টাইপ হিসেবে কাজ করে, অর্থাৎ এটি কপি করে কাজ করে। যদি একটি স্ট্রাক্ট অবজেক্টকে অন্য একটি ভেরিয়েবল বা কনস্ট্যান্টে অ্যাসাইন করা হয়, তবে তার একটি কপি তৈরি হয়, এবং কোনো পরিবর্তন সেই কপিতে প্রভাব ফেলে না।

var person1 = Person(name: "Alice", age: 25)
var person2 = person1

person2.name = "Bob"
print(person1.name)  // Output: "Alice"
print(person2.name)  // Output: "Bob"
  • এখানে, person1 এবং person2 একে অপরের কপি হিসেবে তৈরি হয়েছে। person2 তে পরিবর্তন করলে person1 তে কোনো প্রভাব পড়ে না, কারণ তারা দুটি আলাদা কপি।

মিউটেবল এবং ইমিউটেবল স্ট্রাক্ট

স্ট্রাক্টের প্রোপার্টি মিউটেবল (পরিবর্তনযোগ্য) হতে হলে স্ট্রাক্টটি একটি var ভেরিয়েবল হতে হবে এবং মেথডকে mutating হিসেবে চিহ্নিত করতে হবে।

struct Car {
    var brand: String
    var model: String
    
    mutating func updateModel(newModel: String) {
        model = newModel
    }
}

var myCar = Car(brand: "Tesla", model: "Model S")
myCar.updateModel(newModel: "Model 3")
print(myCar.model)  // Output: "Model 3"
  • এখানে, updateModel মেথডটি mutating হিসেবে চিহ্নিত করা হয়েছে, কারণ এটি স্ট্রাক্টের প্রোপার্টি পরিবর্তন করছে।

স্ট্রাক্টের সাথে ইনিশিয়ালাইজার

Swift-এ স্ট্রাক্ট অটোমেটিকালি একটি মেম্বারওয়াইজ ইনিশিয়ালাইজার তৈরি করে, যা প্রতিটি প্রোপার্টির জন্য মান ইনিশিয়ালাইজ করতে পারে।

struct Rectangle {
    var width: Double
    var height: Double
}

// স্ট্রাক্ট থেকে অবজেক্ট তৈরি
let rect = Rectangle(width: 10.0, height: 5.0)
print("Width: \(rect.width), Height: \(rect.height)")
  • এখানে, Rectangle স্ট্রাক্টের জন্য কোনো কাস্টম ইনিশিয়ালাইজার তৈরি করা হয়নি, কিন্তু Swift অটোমেটিকালি একটি মেম্বারওয়াইজ ইনিশিয়ালাইজার তৈরি করেছে।

কাস্টম ইনিশিয়ালাইজার

স্ট্রাক্টে প্রোপার্টি ইনিশিয়ালাইজ করতে আমরা চাইলে কাস্টম ইনিশিয়ালাইজারও তৈরি করতে পারি।

struct Circle {
    var radius: Double
    var area: Double
    
    init(radius: Double) {
        self.radius = radius
        self.area = 3.1416 * radius * radius
    }
}

let myCircle = Circle(radius: 5.0)
print("Radius: \(myCircle.radius), Area: \(myCircle.area)")
  • এখানে, Circle স্ট্রাক্টে একটি কাস্টম ইনিশিয়ালাইজার ব্যবহার করা হয়েছে, যা radius এবং area প্রোপার্টি ইনিশিয়ালাইজ করে।

স্ট্রাক্ট বনাম ক্লাস

বৈশিষ্ট্যস্ট্রাক্ট (Struct)ক্লাস (Class)
টাইপভ্যালু টাইপরেফারেন্স টাইপ
ইনহেরিটেন্সইনহেরিট করা যায় নাইনহেরিট করা যায়
মেম্বারওয়াইজ ইনিশিয়ালাইজারSwift অটোমেটিকালি তৈরি করেতৈরি করতে হয়
ডি-ইনিশিয়ালাইজারনেইআছে (deinit)

কখন স্ট্রাক্ট ব্যবহার করবেন?

  • যখন আপনার ডেটা টাইপ ছোট এবং সহজ।
  • যখন আপনি ভ্যালু টাইপ (কপি-বাই-ভ্যালু) আচরণ চান।
  • যখন ইনহেরিটেন্স প্রয়োজন নেই।
  • যখন আপনার টাইপের ইনক্যাপসুলেশন (data encapsulation) দরকার, কিন্তু অত্যন্ত জটিল নয়।

উপসংহার

Swift-এ স্ট্রাক্ট হলো একটি শক্তিশালী ডেটা স্ট্রাকচার, যা ক্লাসের মতো কাজ করতে পারে, তবে এটি ভ্যালু টাইপ হিসেবে কাজ করে এবং সাধারণত ছোট ও সাধারণ ডেটা মডেলের জন্য উপযুক্ত। স্ট্রাক্ট ব্যবহার করে প্রোগ্রামকে আরও সুসংগঠিত, পুনঃব্যবহারযোগ্য এবং কার্যকরী করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...