সাবধানতা: সাধারণ ব্যক্তির শর্তাদি এগিয়ে।
এই ব্যাখ্যাটি সবচেয়ে নিটোল-গ্রিট কোড স্তরে কঠোরভাবে সঠিক নয়। তবে এটি এমন একজন ব্যক্তির দ্বারা পর্যালোচনা করা হয়েছে যা প্রকৃতপক্ষে সুইফটে কাজ করে এবং তিনি বলেছিলেন যে এটি একটি মৌলিক ব্যাখ্যা হিসাবে যথেষ্ট।
তাই আমি "কেন" প্রশ্নটির সহজ এবং সরাসরি উত্তর দেওয়ার চেষ্টা করতে চাই ।
সুনির্দিষ্টভাবে বলতে গেলে : কেন আমরা mutating
কোনও কাঠামো পরিবর্তিত কীওয়ার্ড ছাড়াই স্ট্রাক্ট প্যারামিটারগুলি পরিবর্তন করতে পারি যেমন স্ট্রাক্ট ফাংশনগুলি চিহ্নিত করতে হবে?
সুতরাং, বড় ছবি, এটি দর্শনের সাথে অনেক কিছু করার আছে যা সুইফটকে আরও দ্রুত রাখে ।
আপনি প্রকৃত শারীরিক ঠিকানাগুলি পরিচালনা করার সমস্যার মতো এটির মতো চিন্তা করতে পারেন। আপনি যখন আপনার ঠিকানা পরিবর্তন করেন, যদি আপনার বর্তমান একটি প্রচুর লোক থাকে তবে আপনাকে স্থানান্তরিত করা সমস্তকেই আপনাকে জানাতে হবে। তবে কারও কাছে যদি আপনার বর্তমান ঠিকানা না থাকে তবে আপনি যেখানেই চান সরে যেতে পারেন এবং কারও জানা দরকার নেই।
এই পরিস্থিতিতে, সুইফ্ট পোস্ট অফিসের মতো ধরণের। প্রচুর পরিচিতিযুক্ত প্রচুর লোক যদি প্রচুর পরিমাণে ঘুরে বেড়ায় তবে এর সত্যিই উচ্চ ওভারহেড রয়েছে। এই সমস্ত বিজ্ঞপ্তিগুলি পরিচালনা করতে এটির লোকদের একটি বড় কর্মচারীকে অর্থ প্রদান করতে হবে এবং প্রক্রিয়াটি অনেক সময় এবং প্রচেষ্টা গ্রহণ করে। এ কারণেই তার শহরের প্রত্যেকের পক্ষে যতটা সম্ভব যোগাযোগ করা যায় তার পক্ষে সুইফ্টের আদর্শ রাষ্ট্র। তারপরে ঠিকানার পরিবর্তনগুলি পরিচালনা করার জন্য এটির জন্য বড় স্টাফের দরকার নেই এবং এটি দ্রুত এবং আরও ভাল আরও কিছু করতে পারে।
এই কারণেই সুইফট-লোকেরা মান সংক্রান্ত বনাম রেফারেন্স প্রকারগুলি সম্পর্কে সকলেই ভীত হয়। প্রকৃতি অনুসারে, রেফারেন্সের ধরণগুলি পুরো জায়গা জুড়ে "পরিচিতিগুলি" রাক আপ করে এবং মান ধরণের ক্ষেত্রে সাধারণত একটি দম্পতির বেশি প্রয়োজন হয় না। মান প্রকারগুলি হ'ল "সুইফ্ট" -র।
এত ছোট ছবি ফিরে: structs
। স্টিফ্টগুলি সুইফটে একটি বড় বিষয় কারণ তারা বস্তুগুলি করতে পারে এমন বেশিরভাগ কাজ করতে পারে তবে তারা মান ধরণের।
আসুন এমন একটি বাসনা কল্পনা করে শারীরিক ঠিকানা উপমা চালিয়ে misterStruct
যান someObjectVille
। সাদৃশ্যটি এখানে কিছুটা ডুবে যায় তবে আমি মনে করি এটি এখনও সহায়ক।
সুতরাং একটিতে একটি ভেরিয়েবল পরিবর্তন করতে মডেল করার জন্য struct
, ধরা যাক misterStruct
সবুজ চুল রয়েছে এবং নীল চুলে স্যুইচ করার আদেশ পেয়েছে। সাদৃশ্যটি কৃপণ হয়ে ওঠে, যেমনটি আমি বলেছিলাম, তবে যা ঘটে তা হ'ল misterStruct
চুলের চুল বদলানোর পরিবর্তে বৃদ্ধ ব্যক্তিটি সরে যায় এবং নীল চুলযুক্ত একটি নতুন ব্যক্তি ভেতরে চলে যায় এবং সেই নতুন ব্যক্তি নিজেকে কল করতে শুরু করে misterStruct
। কারও ঠিকানার বিজ্ঞপ্তি পরিবর্তন করার দরকার নেই, তবে যদি কেউ সেই ঠিকানার দিকে নজর দেয় তবে তারা নীল চুলের একটি লোক দেখতে পাবে।
এবার আসুন মডেল করা যাক আপনি যখন একটি ফাংশন কল করেন তখন কি হয় struct
। এই ক্ষেত্রে, এটি misterStruct
যেমন একটি অর্ডার পেতে মত changeYourHairBlue()
। সুতরাং পোস্ট অফিস misterStruct
"আপনার চুলের নীল রঙ পরিবর্তন করুন এবং আপনার কাজ শেষ হয়ে গেলে আমাকে বলুন" নির্দেশনা সরবরাহ করে ।
যদি সে আগের মতোই রুটিন অনুসরণ করে থাকে, যদি ভেরিয়েবলটি সরাসরি পরিবর্তিত হওয়ার সময় সে কী করে, তবে সে কী misterStruct
করবে তার নিজের বাড়ি থেকে বেরিয়ে এসে নীল চুলের সাথে একটি নতুন ব্যক্তিকে ডাকবে। তবে এটাই সমস্যা।
অর্ডারটি ছিল "আপনার চুলকে নীলতে পরিবর্তন করুন এবং আপনার কাজ শেষ হয়ে গেলে আমাকে বলুন", তবে এটি সেই সবুজ লোক যিনি সেই আদেশ পেয়েছিলেন। নীল লোকটি প্রবেশের পরে, একটি "কাজ সম্পূর্ণ" বিজ্ঞপ্তিটি এখনও ফেরত পাঠাতে হবে। তবে নীল লোকটি এ সম্পর্কে কিছুই জানে না।
[এই উপমাটি সত্যই ভয়ঙ্কর কিছুটি জাগিয়ে তোলার জন্য, সবুজ কেশিক ছেলেটির সাথে প্রযুক্তিগতভাবে যা ঘটেছিল তা হ'ল তিনি চলে যাওয়ার পরে অবিলম্বে তিনি আত্মহত্যা করেছিলেন। সুতরাং তিনি কাউকেই অবহিত করতে পারবেন না যে টাস্কটি সম্পূর্ণ হয়েছে ! ]
এই সমস্যাটি এড়াতে, কেবল এই জাতীয় ক্ষেত্রে , সুইফ্টকে সরাসরি ঠিকানায় ঠিক সেই ঠিকানায় প্রবেশ করতে হবে এবং প্রকৃতপক্ষে বর্তমান বাসিন্দার চুল বদলাতে হবে । এটি কোনও নতুন লোককে প্রেরণ করার চেয়ে সম্পূর্ণ ভিন্ন প্রক্রিয়া।
আর এই কারণেই সুইফ্ট আমাদের mutating
কীওয়ার্ডটি ব্যবহার করতে চায় !
শেষ ফলাফলটি স্ট্রাক্টকে উল্লেখ করতে যে কোনওরকম দেখতে একই রকম দেখাচ্ছে: বাড়ির বাসিন্দা এখন নীল চুল has তবে এটি অর্জনের প্রক্রিয়াগুলি আসলে সম্পূর্ণ আলাদা। দেখে মনে হচ্ছে এটি একই জিনিস করছে তবে এটি একটি খুব আলাদা জিনিস করছে। এটি এমন একটি কাজ করছে যা সাধারণত সুইফ্ট স্ট্রাইকগুলি কখনই করে না।
সুতরাং দরিদ্র সংকলকটিকে কিছুটা সহায়তা দেওয়ার জন্য এবং কোনও ফাংশন struct
তার নিজস্ব রূপে পরিবর্তিত হয় কি না তা নির্ধারণ করতে হবে না, প্রতিটি স্ট্রাক্ট ফাংশনটির জন্য, আমরা অনুগ্রহ করে mutating
কীওয়ার্ডটি ব্যবহার করতে বলা হয় ।
সংক্ষেপে, সুইফটকে দ্রুত চলতে সহায়তা করতে আমাদের সকলকে অবশ্যই আমাদের অংশটি করা উচিত। :)