স্ট্রাক্টস এবং ক্লাসগুলির মধ্যে পার্থক্য বোঝার জন্য, আমাদের মান এবং রেফারেন্সের প্রকারের মধ্যে মূল পার্থক্যটি জানতে হবে। স্ট্রাক্টগুলি মান ধরণের এবং এর অর্থ এই যে তাদের উপরের প্রতিটি পরিবর্তন কেবল সেই মানটি সংশোধন করবে, শ্রেণিগুলি রেফারেন্সের ধরণ এবং একটি রেফারেন্স টাইপের প্রতিটি পরিবর্তন স্মৃতি বা রেফারেন্সের জায়গায় বরাদ্দকৃত মানটি সংশোধন করবে। উদাহরণ স্বরূপ:
কোন শ্রেণির সাথে আসুন শুরু, Equatable এই বর্গ কে কনর্ফাম করে মাত্র দৃষ্টান্ত তুলনা পাবে, আমরা একটি দৃষ্টান্ত নামক তৈরি pointClassInstanceA
এবং অন্যান্য নামক pointClassInstanceB
বর্গ বি আমরা বরাদ্দ বর্গ, এখন কথন বলছেন যে তারা একই ...
class PointClass: Equatable {
var x: Double
var y: Double
init(x: Double, y: Double) {
self.x = x
self.y = y
}
static func == (lhs: PointClass, rhs: PointClass) -> Bool {
return lhs.x == rhs.x && lhs.y == rhs.y
}
}
var pointClassInstanceA = PointClass(x: 0, y: 0)
var pointClassInstanceB = pointClassInstanceA
assert(pointClassInstanceA==pointClassInstanceB)
pointClassInstanceB.x = 10
print(pointClassInstanceA.x)
//this prints 10
ঠিক আছে, এখানে কী ঘটেছিল কেন আমরা যদি মাত্র পয়েন্টস ক্লাসআইন্সট্যান্সবি এর x মান পরিবর্তন করেছি তবে এটি পয়েন্টক্লাসআইন্সট্যান্সএর এক্স মানও পরিবর্তন করেছে? ঠিক আছে, এটি রেফারেন্সের ধরণগুলি কীভাবে কাজ করে তা দেখায়, যখন আমরা উদাহরণ এটিকে উদাহরণ বি এর মান হিসাবে নির্ধারিত করি এবং তারপরে আমরা এর মধ্যে একটিতে এক্স পরিবর্তন করি তবে এটি উভয়ের এক্স এর পরিবর্তিত হবে কারণ তারা একই রেফারেন্স ভাগ করে এবং কী পরিবর্তিত হয়েছিল সেটির মান ছিল রেফারেন্স।
আসুন একই কাজ কিন্তু একটি স্ট্রাক্ট সঙ্গে
struct PointStruct: Equatable {
var x: Double
var y: Double
init(x: Double, y: Double) {
self.x = x
self.y = y
}
static func == (lhs: PointStruct, rhs: PointStruct) -> Bool {
return lhs.x == rhs.x && lhs.y == rhs.y
}
}
var pointStructInstanceA = PointStruct(x: 0, y: 0)
var pointStructInstanceB = pointStructInstanceA
assert(pointStructInstanceA==pointStructInstanceB)
pointStructInstanceB.x = 100
print(pointStructInstanceA.x)
//this will print 0
আমাদের মূলত আমাদের ক্লাসের মতোই কাঠামো রয়েছে তবে এখন আপনি দেখতে পাচ্ছেন যে আপনি যখন পয়েন্ট স্ট্রাক্ট ইনস্ট্যান্সএর এক্স মানটি মুদ্রণ করবেন তখন এই ক্ষেত্রে কোনও পরিবর্তন হয় নি, এবং এটি কারণ মানের ধরণগুলি আলাদাভাবে কাজ করে এবং তার উদাহরণগুলির মধ্যে একটিতে প্রতিটি পরিবর্তন হবে " স্বতন্ত্র "এবং অন্যটিকে প্রভাবিত করবে না।
সুইফট আরও মান ধরণের ব্যবহারের পরামর্শ দেয় এবং আপনি বলতে পারেন যে তাদের লাইব্রেরিগুলি রেফারেন্সের ধরণের সমস্যাগুলি এড়াতে স্ট্রাক্টের উপর ভিত্তি করে তৈরি করা হয়েছে, অনিচ্ছাকৃতভাবে কোনও মান পরিবর্তন করা ইত্যাদি। স্ট্রাইকগুলি সুইফটে যাওয়ার উপায়। আশা করি এটা সাহায্য করবে.