تفاوت بین == و === در کاتلین

در زبان برنامه نویسی کاتلین، == و === دو عملگر هستند که اغلب برای مقایسه مورد استفاده قرار می گیرند، در حالی که ممکن است در نگاه اول شبیه به هم به نظر برسند، اما اهداف کاملا متفاوتی دارند و رفتارهای متفاوتی نیز دارند.در این پست ، تفاوت‌های کلیدی بین == (عملگر برابری) و === (عملگر برابری ارجاعی) را بررسی خواهیم کرد و مثال‌های متعددی برای نشان دادن کاربرد آنها ارائه می‌کنیم.


(اپراتور برابری) یا همان ==

عملگر == در کاتلین برای برابری ساختاری استفاده می شود. به عبارت ساده تر، از آن برای مقایسه مقادیر دو شی استفاده می شود، صرف نظر از اینکه آنها در حافظه یک نمونه (instance) هستند یا خیر.

مثال 1: مقایسه رشته ها

نتیجه str1 == str2 برابر با true می شود زیرا هر دو رشته دارای کاراکترهای یکسان هستند.

مثال 2: مقایسه لیست ها

در این مثال، a و b دو شی متفاوت در حافظه هستند، اما a == b جوابش true است زیرا عناصر هر دو لیست یکسان است.


اپراتور برابری ارجاعی یا ===

عملگر === برای برابری ارجاعی استفاده می شود و تعیین می کند که آیا دو مرجع دقیقاً به یک شی در حافظه اشاره می کنند یا خیر.

مثال 1: مقایسه نمونه های(Instances) کلاس

حتی با وجود اینکه person1 و person2 دارای محتوای یکسانی هستند و هر دو نشان دهنده شخصی به نام "Sara" هستند، اما person1 === person2 به دلیل ارجاع به نمونه های مختلف کلاس Person جواب false را برمیگرداند و روش کار به این صورت است که اپراتور بررسی می کند که آیا ارجاعات به یک مکان حافظه اشاره می کند یا خیر، که در این مورد به یک مکان رجوع نمی کند در نتیجه جواب false می شود.

مثال 2: مقایسه مراجع شی

در اینجا، x و y هر دو به یک شی فهرست اشاره می کند، بنابراین x === y جوابش true است. این به این دلیل است که هر دو متغیر به یک مکان حافظه اشاره می کند و نشان می دهد که آنها یک شی هستند.


تفاوت های اساسی بین == و === را خلاصه کنیم:

  • == برای برابری ساختاری، مقایسه محتوا یا مقادیر اشیاء استفاده می شود.
  • === برای برابری ارجاعی استفاده می شود و تعیین می کند که آیا دو مرجع به یک شی در حافظه اشاره می کند یا خیر.
  • هنگام کار با انواع داده های ابتدایی (مانند Int، Boolean، Char) == و === رفتار یکسانی دارند، زیرا این نوع متغیر ها به عنوان انواع مقادیر در حافظه ذخیره می شوند.


نتیجه‌گیری

در زبان برنامه‌نویسی کاتلین، عملگرهای == و === کاربردهای متفاوتی دارند: یکی برای مقایسه مقادیر و دیگری برای مقایسه ارجاعات اشیا. درک این تفاوت‌ها برای نوشتن کدی بدون باگ مهم است و شما بسته به نیاز های خاص خود باید بین == یا === یکی را انتخاب کنید و این ویژگی به شما این امکان را می‌دهد که مقایسه‌های مناسب را انجام دهید و از بروز باگ‌های مرتبط با مقایسه برابری جلوگیری کنید تا کد شما به درستی عمل کند.


ممنون که تا آخر این پست همراه من بودید ، امیدوارم براتون مفید بوده باشه 🙌🙏✌ (:

بقیه آموزش های mister developer را می توانید در تلگرام و اینستاگرام دنبال کنید!!

کانال تلگرام: mister_developerr

اینستاگرام: mister_developerr

موفق و پیروز باشید