Swift-এ অ্যাসোসিয়েটেড ভ্যালু এবং রঅ ভ্যালু (Raw Value) হলো দুটি ধারণা, যা সাধারণত এনাম (Enum) এর সাথে ব্যবহৃত হয়। এগুলি এনামের প্রকার এবং ব্যবহার কনফিগার করতে সহায়ক। এনামের মাধ্যমে আমরা বিভিন্ন কেস ডিফাইন করতে পারি এবং প্রতিটি কেসের সাথে অতিরিক্ত ভ্যালু বা রঅ ভ্যালু যুক্ত করতে পারি। নিচে এই দুটি ধারণার বিস্তারিত আলোচনা করা হলো।
অ্যাসোসিয়েটেড ভ্যালু (Associated Values)
অ্যাসোসিয়েটেড ভ্যালু হলো এনামের প্রতিটি কেসের সাথে অতিরিক্ত ভ্যালু সংযুক্ত করার একটি পদ্ধতি। এটি একটি কেসকে আরও ডাইনামিক করে তোলে, কারণ প্রতিবার কেসটি ব্যবহার করা হলে একটি ভিন্ন ভ্যালু যুক্ত করা যায়। এটি স্ট্রাক্ট বা টাপল (Tuple) এর মতো বিভিন্ন ডেটা টাইপ ধারণ করতে পারে।
অ্যাসোসিয়েটেড ভ্যালুর উদাহরণ
enum Transportation {
case car(String, Int)
case bus(Int)
case bicycle
}
// Transportation এর একটি উদাহরণ তৈরি করা
let myCar = Transportation.car("Tesla", 4)
let myBus = Transportation.bus(50)
let myBicycle = Transportation.bicycle
// অ্যাসোসিয়েটেড ভ্যালু ব্যবহারের উদাহরণ
switch myCar {
case .car(let brand, let seats):
print("Car brand: \(brand), Seats: \(seats)")
case .bus(let capacity):
print("Bus capacity: \(capacity)")
case .bicycle:
print("It's a bicycle.")
}
- এখানে,
Transportationএনামে তিনটি কেস রয়েছে:car,bus, এবংbicycle।carকেসে একটি স্ট্রিং (ব্র্যান্ড) এবং একটি ইন্টিজার (সিট সংখ্যা) রয়েছে।busকেসে একটি ইন্টিজার (ধারণক্ষমতা) রয়েছে।bicycleকেসে কোনো অ্যাসোসিয়েটেড ভ্যালু নেই।
switchস্টেটমেন্ট ব্যবহার করে আমরা প্রতিটি কেসের সাথে যুক্ত অ্যাসোসিয়েটেড ভ্যালু বের করেছি।
অ্যাসোসিয়েটেড ভ্যালুর ব্যবহার
- একটি এনামের মাধ্যমে আপনি বিভিন্ন ধরনের ডেটা সংরক্ষণ করতে এবং প্রয়োজন অনুযায়ী ব্যবহার করতে পারবেন।
- এটি একাধিক ডেটা টাইপের তথ্য ধারণ করতে পারে, যা প্রোগ্রামিংয়ে ডাইনামিক এবং ফ্লেক্সিবল ব্যবহার নিশ্চিত করে।
রঅ ভ্যালু (Raw Value)
রঅ ভ্যালু হলো একটি এনামের প্রতিটি কেসের সাথে যুক্ত একটি পূর্বনির্ধারিত ভ্যালু। এটি সাধারণত স্ট্রিং, ইন্টিজার, বা অন্য কোনো নির্দিষ্ট টাইপের ভ্যালু হিসেবে থাকে এবং প্রতিটি কেসের জন্য একটি নির্দিষ্ট ভ্যালু নির্ধারণ করা হয়। রঅ ভ্যালু সেট করা হলে এনামের প্রতিটি কেস সেই নির্দিষ্ট টাইপের ভ্যালু পায়।
রঅ ভ্যালুর উদাহরণ
enum Direction: String {
case north = "North"
case south = "South"
case east = "East"
case west = "West"
}
// রঅ ভ্যালু অ্যাক্সেস করা
let direction = Direction.north
print(direction.rawValue) // Output: "North"
- এখানে,
Directionএনামে চারটি কেস রয়েছে:north,south,east, এবংwest। প্রতিটি কেসের জন্য একটি স্ট্রিং রঅ ভ্যালু নির্ধারণ করা হয়েছে। direction.rawValueদিয়ে আমরাnorthকেসের রঅ ভ্যালু বের করেছি, যা"North"।
রঅ(Raw) ভ্যালুর অন্য উদাহরণ: ইন্টিজার টাইপ
enum StatusCode: Int {
case success = 200
case notFound = 404
case serverError = 500
}
let code = StatusCode.notFound
print(code.rawValue) // Output: 404
- এখানে,
StatusCodeএনামে ইন্টিজার টাইপ রঅ ভ্যালু নির্ধারণ করা হয়েছে, যা প্রতিটি কেসের জন্য একটি নির্দিষ্ট মান ধারণ করে।
রঅ ভ্যালু এবং অ্যাসোসিয়েটেড ভ্যালুর পার্থক্য
| বৈশিষ্ট্য | রঅ ভ্যালু (Raw Value) | অ্যাসোসিয়েটেড ভ্যালু (Associated Value) |
|---|---|---|
| টাইপ | একটি নির্দিষ্ট টাইপ হতে হবে (যেমন, স্ট্রিং বা ইন্টিজার) | যেকোনো টাইপ হতে পারে এবং ভিন্ন ভিন্ন ভ্যালু ধারণ করতে পারে। |
| ফিক্সড ভ্যালু | প্রতিটি কেসের জন্য পূর্বনির্ধারিত এবং স্থির থাকে। | প্রতিবার ব্যবহার করার সময় কেসের জন্য ভিন্ন ভিন্ন ভ্যালু থাকতে পারে। |
| প্রাথমিক ব্যবহার | সহজভাবে কেসের সাথে একটি মান অ্যাসাইন করা। | ডাইনামিক ডেটা সংরক্ষণ বা কেসের সাথে অতিরিক্ত তথ্য যুক্ত করা। |
রঅ ভ্যালু ব্যবহার করে ইনিশিয়ালাইজেশন
Swift-এ আপনি রঅ ভ্যালুর মাধ্যমে এনামের একটি কেস ইনিশিয়ালাইজ করতে পারেন, যদি সেই রঅ ভ্যালু সেই কেসের সাথে মিলে যায়।
if let direction = Direction(rawValue: "East") {
print("The direction is \(direction).") // Output: "The direction is east."
} else {
print("Invalid direction")
}
- এখানে,
"East"রঅ ভ্যালু দিয়েDirectionএনামের একটি ইনস্ট্যান্স তৈরি করা হয়েছে।
উপসংহার
Swift-এ অ্যাসোসিয়েটেড ভ্যালু এবং রঅ ভ্যালু দুটি ভিন্নভাবে এনাম ব্যবহারের জন্য সুবিধা প্রদান করে:
- অ্যাসোসিয়েটেড ভ্যালু: ডাইনামিক ডেটা সংরক্ষণ এবং ব্যবহারের জন্য উপযোগী, যা একটি কেসের সাথে অতিরিক্ত তথ্য সংযুক্ত করতে পারে।
- রঅ ভ্যালু: প্রতিটি কেসের জন্য নির্দিষ্ট এবং পূর্বনির্ধারিত মান নির্ধারণ করতে এবং সহজে তা অ্যাক্সেস করতে সহায়ক।
এই দুটি ধারণা Swift-এ এনাম ব্যবহারের ক্ষমতা বাড়িয়ে তোলে এবং প্রোগ্রামিংয়ে এনামের ব্যবহার আরও কার্যকর এবং ফ্লেক্সিবল করে তোলে।