Nullable variables

اگر در کاتلین یک متغیر نال تعریف کنیم و بزنیم
print(test?.length)
اگر نال بود اون lengthرو اجرا نمیکنه و مقدار پیشفرض testرو چاپ میکنه
ولی اگر بزنیم
print(test?.length?:5)
میاد مقدار ۵ رو میریزه تو test و چاپ میکنه
حالا من نمیفهمم اون ?یعنی اگر نال بود دستور رو اجرا کن یا نکن
و اینکه ?مربوط به دستوریه که قبل ?بیاد یا بعدش

سلام ؟ چک می کنه درصورت null نبودن عبارت قبلی کد اجرا میکنه
؟: درصورت null بودن با مقدار که بعد از : میاد کد اجرا میکنه
چیزی شبیه getOrElse جاوا و اسکالا هستش

2 Likes

من متاسفانه تازه واردم و از مثالی که در جاوا و اسکالا زدین چیزی سر در نیاوردم
و راستش برای اولین باره دارم تو انجمنی پرسشی مطرح میکنم و بلد نیستم چطور سوالمو خوب مطرح کنم
این آموزشی که من دیدم سه تا چیز رو معرفی کرد ؟ و !! و :
این !! رو فهمیدم که چه نال باشه چه نباشه دستور بعدش اجرا میشه
یعنی اگر بزنم
(print(test?.lengthاون testچه نال باشه چه نباشه lengthاجرا میشه اگر نال باشه که null pointer exception میگیریم اگرم نباشه که طولشو میگیره
تا اینجا چیزی بود که من فهمیدم
اما نمیتونم منطق این دستورو بفهمم

(print(test?.length?:5

این کد رو توضیح میدم
۱. چک میکنه test ، نال هست اگه هست کاری نمیکنه چون شرط پیش فرض وجود نداره : بعد ؟ کنار test نیست
۲. اگر test نال نبود length رو فراخوانی میکنه
۳. اگه length نال نبود عبارت و print میکنه
۴. اگه length نال بود از پیش فرض 5 برای length استفاده میشه و عبارت print میشه

3 Likes

اها مرسی بابت توضیح

1 Likes