সুইফটে জিনিসের প্রকার
বিধিটি হ'ল:
শ্রেণীর উদাহরণগুলি রেফারেন্সের ধরণ (যেমন শ্রেণীর উদাহরণগুলির জন্য আপনার রেফারেন্স কার্যকরভাবে পয়েন্টার হয় )
ফাংশনগুলি রেফারেন্সের ধরণ
অন্য সব কিছুই একটি মূল্য প্রকার ; "অন্য সব কিছু" এর অর্থ সহজভাবে স্ট্রিমগুলির উদাহরণ এবং এনামগুলির উদাহরণস্বরূপ, কারণ সুইফটে এটিই রয়েছে। অ্যারে এবং স্ট্রিংগুলি উদাহরণস্বরূপ struct আপনি যেমন নতুন্যাক্টটি নির্দেশ করেছেন ঠিক তেমন ব্যবহার করে এবং ঠিকানার মাধ্যমে এই জিনিসগুলির মধ্যে একটি (ফাংশন আর্গুমেন্ট হিসাবে) একটি রেফারেন্স পাস করতে পারেনinout
। তবে টাইপটি নিজেই একটি মান ধরণের।
আপনার জন্য রেফারেন্সের ধরণগুলি কী বোঝায়
একটি রেফারেন্স টাইপ অবজেক্টটি অনুশীলনে বিশেষ কারণ:
আমার কাছে অ্যাসাইনমেন্ট বা ফাংশনে উত্তীর্ণ হওয়ার ফলে একই বস্তুর একাধিক উল্লেখ পাওয়া যায়
রেফারেন্সটি যদি একটি ধ্রুবক let
হয় ( এমনকি স্পষ্ট করে বা বোঝানো হয়) এমনকি অবজেক্টটি নিজেই পরিবর্তনযোগ্য ।
অবজেক্টের কোনও রূপান্তর object অবজেক্টটিকে তার সমস্ত রেফারেন্স দ্বারা দেখা হিসাবে প্রভাবিত করে।
এগুলি বিপদ হতে পারে, তাই নজর রাখুন। অন্যদিকে, একটি রেফারেন্স টাইপ পাস করা পরিষ্কারভাবে দক্ষ কারণ কেবলমাত্র একটি পয়েন্টার অনুলিপি করে পাস করা হয় যা তুচ্ছ।
আপনার জন্য মূল্য মূল্য কী বোঝায়
স্পষ্টতই, কোনও মান ধরণের পাস করা "নিরাপদ" এবং এর let
অর্থ যা বোঝায়: আপনি কোনও কাঠামোর উদাহরণটি পরিবর্তন করতে পারবেন না বা কোনও let
রেফারেন্সের মাধ্যমে উদাহরণস্বরূপ এনাম ইনস্ট্যান্স করতে পারবেন না । অন্যদিকে, মানটির পৃথক অনুলিপি তৈরি করে সেই সুরক্ষা পাওয়া যায়, তাই না? এটি কি কোনও ধরণের মান ধরণের সম্ভাব্য ব্যয় করে না?
ভাল, হ্যাঁ এবং না। এটি যতটা খারাপ আপনি ভাবেন তেমন খারাপ নয়। হিসাবে Nate কুক বলেন, একটি মান টাইপ ক্ষণস্থায়ী না অগত্যা পরোক্ষভাবে অনুলিপি কারণ, let
(স্পষ্ট বা উহ্য) অপরিবর্তনীয়তা গ্যারান্টী বা নিশ্চয়তা দিচ্ছে তাই কপি কিছু করার কোন প্রয়োজন নেই। এমনকি কোনও var
রেফারেন্সে যাওয়ার অর্থ এই নয় যে জিনিসগুলি অনুলিপি করা হবে , কেবল এটি প্রয়োজন হলে তা হতে পারে (কারণ কোনও মিউটেশন আছে)। দস্তাবেজগুলি আপনাকে বিশেষভাবে পরামর্শ দেয় যাতে আপনার নিকটগুলি কোনও মোড়কে না ফেলে।