Avatar ·

ماذا تعني علامة التعجب في Kotlin وكيف تتخلص منها؟

مرحباً بالجميع! لقد بدأت للتو في تعلم Kotlin بعد Java وواجهت بناء جملة غير مفهوم. في كود شخص آخر، رأيت أن هناك علامة تعجب واحدة بعد نوع المتغير، على سبيل المثال: ```kotlin val name: String! = someJavaMethod() ``` حاولت فهم ما يعنيه هذا، لكنني لم أجد شيئاً في التوثيق. عندما أكتب هذا الكود في مشروعي، يظهر المترجم خطأ "This type has a constructor". وإذا استخدمته في نوع الإرجاع لدالة، فإن IDEA تضع تحته خطاً أحمر. في نفس الوقت، أرى في السجلات أن المتغير قد يكون null أحياناً وأحياناً لا. جربت كتابة `String?` — عندها يشتكي المترجم من أنني لا أستطيع عمل "unpack". وإذا كتبت `String` — فإنه يعطي تحذيراً عن احتمال NPE. أرجو التوضيح: 1. ما هو `String!` ولماذا يوجد هذا التركيب النحوي؟ 2. كيف نتعامل مع هذه الأنواع بشكل صحيح؟ 3. هل هناك طريقة للتخلص من علامة التعجب هذه؟ أقدم مثالاً على الكود الذي يربكني: ```kotlin // Java-