Swift-এ Associated Values: এটি কী, সিনট্যাক্স এবং উদাহরণ

লেখক: IT Sectr প্রকাশিত: 2026-06-17 পড়ার সময়: 6 মিনিট

Associated Values — একটি Swift প্রক্রিয়া যা প্রতিটি enum কেসে পৃথকভাবে নির্বিচারে ডেটা সংযুক্ত করতে দেয়। raw values-এর বিপরীতে, যেখানে সমস্ত কেসের একই ধরণের মান থাকে, associated values প্রতিটি কেসের জন্য প্রকার এবং পরিমাণে ভিন্ন হতে পারে। Apple Documentation, 2026 অনুসারে, অতিরিক্ত র‍্যাপার টাইপ তৈরি না করে ডোমেন সঠিকভাবে মডেল করার জন্য এটি একটি মূল ক্ষমতা।

মূল পয়েন্ট

  • Associated Values — একটি enum কেসের সাথে সংযুক্ত পৃথক ডেটা
  • প্রকার associated values প্রতিটি কেসের জন্য ভিন্ন হতে পারে
  • নিষ্কাশন switch বা if case-এ মান বাইন্ডিংয়ের মাধ্যমে হয়
  • পারস্পরিক বর্জন — associated values, raw values-এর সাথে অসামঞ্জস্যপূর্ণ
  • প্র্যাকটিস — ত্রুটি, ক্যোয়ারী ফলাফল এবং UI অবস্থার মডেলিং

Associated Values কী?

Associated Values হল অতিরিক্ত তথ্য যা একটি enum কেস নিজের সাথে সংরক্ষণ করতে পারে। raw values-এর বিপরীতে, যা ঘোষণা স্তরে স্থির, associated values enum ইনস্ট্যান্স তৈরি করার সময় সেট করা হয়।

একটি পেমেন্ট পদ্ধতি মডেল করার কল্পনা করুন: creditCard কেস শেষ 4টি সংখ্যা এবং মেয়াদ শেষ হওয়ার তারিখ সংরক্ষণ করতে পারে, যেখানে applePay কেস কিছুই সংরক্ষণ করে না। associated values-এর সাথে, এটি সাবক্লাস বা ঐচ্ছিক ফিল্ড ছাড়াই স্বাভাবিকভাবে বাস্তবায়িত হয়।

Apple ডকুমেন্টেশন অনুসারে, associated values enum-কে ধ্রুবকের একটি সাধারণ সেট থেকে একটি বীজগাণিতিক ডেটা টাইপে (sum type) রূপান্তরিত করে, যা ফাংশনাল ভাষার বৈশিষ্ট্য। এটি কোডের অভিব্যক্তিকে উল্লেখযোগ্যভাবে বাড়িয়ে তোলে।

Associated values-এর সিনট্যাক্স

Associated Values কেসের পরে বন্ধনীর মধ্যে ঘোষণা করা হয়, ফাংশনের মতো প্যারামিটারের নাম এবং প্রকার উল্লেখ করে।

swift
enum MediaFile {
    case image(width: Int, height: Int, format: String)
    case video(duration: Double, codec: String)
    case audio(bitrate: Int)
    case unknown
}

একটি ইনস্ট্যান্স তৈরি করার সময়, associated values আর্গুমেন্ট হিসাবে পাস করা হয়:

swift
let photo = MediaFile.image(width: 1920, height: 1080, format: "jpeg")
let clip = MediaFile.video(duration: 120.5, codec: "h264")

Swift associated values-এর সংখ্যা বা প্রকারের উপর কোনও বিধিনিষেধ আরোপ করে না। আপনি associated values-এর ভিতরে জেনেরিক, ক্লোজার ফাংশন এবং অন্যান্য enum ব্যবহার করতে পারেন। এটি জটিল নেস্টেড স্ট্রাকচার তৈরি করা সম্ভব করে।

associated values-এর প্যারামিটারের নামগুলি ইনস্ট্যান্স তৈরি করার সময় আর্গুমেন্ট লেবেল হিসাবে ব্যবহৃত হয় — এটি কোড পঠনযোগ্যতা উন্নত করে। switch-এর মাধ্যমে নিষ্কাশনের সময়, নামগুলি ডকুমেন্টেশন হিসাবে কাজ করে, প্রতিটি মানের অর্থ স্পষ্ট করে। এই পদ্ধতি কোডকে স্ব-ডকুমেন্টিং করে তোলে এবং ডেটা ম্যাচ করার সময় ত্রুটির সম্ভাবনা হ্রাস করে। এটি বড় iOS অ্যাপ্লিকেশনের টিম ডেভেলপমেন্টে বিশেষভাবে মূল্যবান।

Switch with associated values

Switch হল associated values নিষ্কাশনের প্রাথমিক উপায়। মানগুলি let বা var-এর মাধ্যমে ধ্রুবক বা ভেরিয়েবলের সাথে আবদ্ধ হয়।

swift
func describe(_ file: MediaFile) -> String {
    switch file {
    case .image(let w, let h, let fmt):
        return "Image \(w)x\(h) .\(fmt)"
    case .video(let duration, let codec):
        return "Video \(duration)s, \(codec)"
    case .audio(let bitrate):
        return "Audio \(bitrate)kbps"
    case .unknown:
        return "Unknown format"
    }
}

Swift আংশিক ম্যাচিং সমর্থন করে — আপনি associated values-এর জন্য নির্দিষ্ট মান নির্ধারণ করতে পারেন:

swift
switch file {
case .image(let w, let h, "png"):
    print("PNG চিত্র \(w)x\(h)")
case .image(1920, 1080, _):
    print("Full HD চিত্র")
default:
    break
}

ওয়াইল্ডকার্ড (_) ব্যবহার অপ্রয়োজনীয় associated values উপেক্ষা করতে দেয়, এবং কেসের ধ্রুবকগুলি আপনাকে নির্দিষ্ট মানের সাথে মিল পরীক্ষা করতে দেয়।

Associated Values vs Raw Values

অনেক শিক্ষানবিশ ডেভেলপার associated values কে raw values-এর সাথে গুলিয়ে ফেলেন। এগুলি বিভিন্ন ব্যবহারের ক্ষেত্রে ভিন্ন প্রক্রিয়া।

বৈশিষ্ট্যRaw ValuesAssociated Values
ডেটা টাইপসমস্ত কেসের জন্য একটি টাইপপ্রতিটি কেসের জন্য ভিন্ন টাইপ
নির্ধারণের সময়enum ঘোষণার সময়ইনস্ট্যান্স তৈরির সময়
বাধ্যতামূলকসমস্ত কেসের একটি মান আছেকিছু কেসের মান নাও থাকতে পারে
সামঞ্জস্যতাপারস্পরিক বর্জনীয় — একসাথে ব্যবহার করা যাবে না

Swift Evolution অনুসারে, associated values Swift 2.0-এ enum রিডিজাইনের অংশ হিসাবে চালু করা হয়েছিল। তারা টাইপের জন্য একটি বীজগাণিতিক পদ্ধতি প্রদান করে, যেখানে প্রতিটি কেস তার নিজস্ব স্বাক্ষর সহ একটি পৃথক কনস্ট্রাক্টর।

Associated values-এর ব্যবহারিক উদাহরণ

Associated Values বাস্তব iOS প্রকল্পে সক্রিয়ভাবে ব্যবহৃত হয়। আসুন তিনটি সাধারণ পরিস্থিতি বিবেচনা করি।

API প্রতিক্রিয়ার মডেলিং

swift
enum APIResponse<T: Codable> {
    case success(data: T, cached: Bool)
    case failure(error: Error, retryAvailable: Bool)
    case loading(progress: Double)
}

UI স্টেট মেশিন

swift
enum ViewState<T> {
    case idle
    case loading(message: String)
    case loaded(data: T)
    case error(message: String, retryAction: () -> Void)
}

associated values-এর সাথে, enum স্টেট মেশিনের জন্য একটি শক্তিশালী টুল হয়ে ওঠে: প্রতিটি কেস একটি অবস্থা, associated values হল সেই অবস্থার প্যারামিটার। কম্পাইলার গ্যারান্টি দেয় যে সমস্ত ট্রানজিশন হ্যান্ডেল করা হয়েছে।

if case এবং guard case-এর মাধ্যমে নিষ্কাশন

switch ছাড়া একটি একক কেস পরীক্ষা করতে, if case বা guard case ব্যবহার করুন। যখন আপনার শুধুমাত্র একটি বিকল্প হ্যান্ডেল করার প্রয়োজন হয় তখন এটি আরও কমপ্যাক্ট।

swift
let error = NetworkError.timeout(seconds: 30)

if case .timeout(let seconds) = error {
    print("\(seconds)s পরে অনুরোধের সময় শেষ")
}

guard case .httpError(let code, _) = error else {
    return
}
print("\(code) কোড সহ HTTP ত্রুটি")

সচরাচর জিজ্ঞাসিত প্রশ্ন

একটি enum-এর কি প্যারামিটার ছাড়া associated values থাকতে পারে?

হ্যাঁ, একটি কেসের associated values নাও থাকতে পারে — উদাহরণস্বরূপ, case unknown। এই ধরনের কেস অতিরিক্ত ডেটা ছাড়া সাধারণ enum কেসের মতো আচরণ করে। এটি মার্কার অবস্থার জন্য সুবিধাজনক।

associated values সহ দুটি enum কীভাবে তুলনা করবেন?

Swift associated values সহ enum-এর জন্য স্বয়ংক্রিয়ভাবে Equatable জেনারেট করে না (Swift 4.2+ এর আগে)। স্পষ্ট Equatable বাস্তবায়ন যোগ করুন বা প্রতিটি কেস ক্রমানুসারে তুলনা করতে switch ব্যবহার করুন।

পুনরাবৃত্ত enum-এ কি associated values ব্যবহার করা যাবে?

হ্যাঁ, indirect enum-এ associated values ট্রি এবং লিঙ্কড লিস্ট তৈরির একটি মানক কৌশল। একটি কেসে indirect চিহ্নিত একই টাইপের associated value থাকতে পারে।

কিভাবে associated values struct-এর ঐচ্ছিক বৈশিষ্ট্য থেকে আলাদা?

Associated Values টাইপ-নিরাপদ — প্রতিটি কেস গ্যারান্টিযুক্ত যে শুধুমাত্র তার নিজস্ব ডেটা আছে। ঐচ্ছিক বৈশিষ্ট্য সহ struct-এ, প্রতিটি ইনস্ট্যান্সে সমস্ত ফিল্ড থাকে এবং রানটাইম nil চেক প্রয়োজন।

associated Values কি Codable সমর্থন করে?

Swift associated values সহ enum-এর জন্য স্বয়ংক্রিয়ভাবে Codable জেনারেট করে না। কাস্টম কোডিং কী ব্যবহার করে কেসের উপর switch-এর মাধ্যমে encode এবং decode-এর ম্যানুয়াল বাস্তবায়ন প্রয়োজন।

সারসংক্ষেপ

  • Associated Values — প্রতিটি enum কেসে ভিন্ন ডেটা সংযুক্ত করার প্রক্রিয়া
  • সিনট্যাক্স — ফাংশনের মতো কেসের পরে বন্ধনীতে প্যারামিটার ঘোষণা
  • নিষ্কাশন let বাইন্ডিং বা if case সহ switch-এর মাধ্যমে
  • অসামঞ্জস্যপূর্ণ raw values-এর সাথে — শুধুমাত্র একটি ব্যবহার করুন
  • জেনেরিক associated values-এ enum-কে সর্বজনীন কন্টেইনার বানায়
  • স্টেট মেশিন — iOS-এ associated values-এর জন্য সাধারণ পরিস্থিতি

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন