ההבדל בין אופרטורים "==" ו- "===" בקוטלין

1. סקירה כללית

במאמר זה נדבר על ה- ההבדל בין מפעילי "==" ו- "===" בקוטלין.

בקוטלין, בדיוק כמו בג'אווה, יש לנו שני מושגים שונים של שוויון, שוויון התייחסותי, ו שוויון מבני.

2. שוויון התייחסותי

לשם שוויון התייחסות, אנו משתמשים ב- === סמל המאפשר לנו להעריך את הפניה של אובייקט (אם הוא מצביע על אותו אובייקט). זה שווה ערך למפעיל "==" בג'אווה.

נניח שיש לנו שני מספרים שלמים שהוגדרו:

val a = מספר שלם (10) val b = מספר שלם (10)

ואנחנו בודקים את שניהם על ידי עשייה א === ב, שיחזור שֶׁקֶר מכיוון שהם שני אובייקטים נפרדים, שכל אחד מהם מצביע על מיקום אחר בזיכרון.

3. שוויון מבני

עכשיו לשוויון מבני, אנו משתמשים ב- == סמל שמעריך אם שני הערכים זהים (או שווים). זה מושג בדרך כלל על ידי יישום שווים() שיטה בג'אווה.

אז, באמצעות אותו דבר שלמים לדוגמא, אנחנו רק צריכים לעשות א == בובמקרה זה הוא יחזור נָכוֹן, מכיוון ששני המשתנים הם בעלי אותו ערך.

4. השוואת אובייקטים מורכבים

אם אנו רוצים לבדוק שוויון באובייקטים מורכבים יותר, הסמלים יתנהגו כך. בוא נגיד שיש לנו a מִשׁתַמֵשׁ, שיש בו רשימת תחביבים:

מחלקת נתונים משתמש (שם val: מחרוזת, גיל גיל: Int, תחביבים val: רשימה)

ה === יבדוק שוויון התייחסות ובאמצעות שימוש נוח רשימה אנחנו יכולים לנצל את זה == מפעיל, אשר יבדוק את האובייקט והנתונים הכלולים ברשימה.

5. מערכים שוויון

ל מערכים, נכון לקוטלין 1.1, אנו יכולים לבדוק את השוויון המבני באמצעות ה- infix פונקציות contentEquals ו contentDeepEquals:

val hobbies = arrayOf ("Hiking, Chess") val hobbies2 = arrayOf ("Hiking, Chess") assertTrue (תוכן תחביבים שווה תחביבים 2)

6. מסקנה

הדרכה מהירה זו הציגה את ההבדל בין שוויון התייחסותי ומבני בקוטלין, דרך דוגמה מאוד פשוטה.

כמו תמיד, ניתן למצוא את היישום של כל הדוגמאות והקטעים האלה ב- GitHub.

שים לב שמדובר בפרויקט מבוסס Maven, כך שיהיה קל לייבא ולהפעיל אותו כמות שהוא.


$config[zx-auto] not found$config[zx-overlay] not found