الكلمات المفتاحية (Keywords) والمعاملات (Operators) في لغة Kotlin
< Kotlin
الكلمات المفتاحيّة الثابتة (Hard Keywords)
تُعدُّ الكلمات الآتية كلماتٍ مفتاحيّةً ولا يمكن استخدامها كمُعرِّفات:
as- تُستخدَم للتحويلات ما بين الأنواع
- تُحدِّد تسميةً بديلةً (alias) عند عملية الاستيراد (import)
as?للتحويلات الحافظة للنوع
breakلإنهاء تنفيذ الحلقةclassللتصريح عن الصنفcontinueللاستمرار بالخطوة التالية لأقرب حلقة محيطةdoللبدء بحلقة do/while (والتي يختبر الشرط فيها لاحقًا)elseلتعريف فرعٍ من تعبير الشرط if والذي سينفذ عندما يكون الشرط بالقيمة falsefalseلتحديد القيمة false في النوع الثنائي (boolean)forالبدء بحلقة forfunللتصريح عن الدالةifللبدء بتعبير ifin- لتحديد الكائن الذي يتم عبوره في حلقة for
- تستخدم كمعامل ضمنيّ للتحقق من انتماء القيمة إلى مجالٍ أو مجموعةٍ أو أي كيانٍ يعرف التابع contains
- تستخدم في تعبير when بنفس الهدف السابق
- تجعل متحول النوع contravariant
!in- يستخدم كمعاملٍ للتأكد من أن القيمة لا تنتمي إلى مجالٍ أو مجموعةٍ أو أي كيانٍ يعرف التابع contains
- تستخدم في تعبير when بنفس الهدف السابق
interfaceللتصريح عن واجهةis- للتحقق من أن القيمة لها نوع محدد
- تستخدم في تعبير when بنفس الهدف السابق
!is- للتحقق من أن القيمة ليس لها نوع محدد
- تستخدم في تعبير when بنفس الهدف السابق
nullهي قيمة ثابتة تمثل مرجعية كائنية لا تشير إلى أيّ كائن.objectللتصريح عن الصنف وكائنه بنفس الوقتpackageلتحديد الحزمة الحالية للملفreturnللعودة من أقرب دالة محيطة أو دالة مجهولةsuper- تشير إلى تعريف استخدام الصنف الأعلى للتابع أو الخاصية
- لاستدعاء باني الصنف الأعلى من الباني الثانوي
this- تشير إلى المستقبِل الحالي
- تستدعي بانيًا آخر في نفس الصنف من بانٍ ثانوي
throwلرمي استثناءtrueلتحديد القيمة true في النوع الثنائي (boolean)tryلبدء قسم التعامل مع الاستثناءtypealiasللتصريح عن التسمية البديلة للأنواعvalللتصريح عن خاصية للقراءة فقط أو متحول محليvarللتصريح عن خاصية متغيرة أو متحول محليwhenللبدء بتعبير when بهدف تنفيذ إحدى الحالات الواردة.whileللبدء بحلقة while (باختبار الشرط أولًا)
الكلمات المفتاحيّة المرنة (Soft Keywords)
قد تستخدم الكلمات الآتية ككلماتٍ مفتاحية في سياق ما أو كمعرفات في سياق آخر:
by- لتعميم تعريف استخدام الواجهة إلى كائن آخر
- لتعميم تعريف الاستخدام لعمليات الوصول للخاصية إلى كائن آخر
catchللبدء بالجزء الذي يعالج نوع استثناء محددconstructorللتصريح عن بانٍ أساسي أو ثانويdelegateيستخدم كتوصيف لهدف موقع الاستخدامdynamicكمرجعية لنوع ديناميكي في شيفرة Kotlin/JSfieldتستخدم كتوصيف لهدف موقع الاستخدامfileتستخدم كتوصيف لهدف موقع الاستخدامfinallyللبدء بالجزء الذي سيُنفذ عند الخروج من الجزء tryget- لتعريف getter للخاصية
- يستخدم كتوصيف لهدف موقع الاستخدام
importلاستيراد التصريح من حزمة أخرى للملف الحاليinitللبدء بجزء التهيئةparamتستخدم كتوصيف لهدف موقع الاستخدامpropertyتستخدم كتوصيف لهدف موقع الاستخدامreceiverتستخدم كتوصيف لهدف موقع الاستخدامset- لتعريف setter للخاصية
- تستخدم كتوصيف لهدف موقع الاستخدام
setparamتستخدم كتوصيف لهدف موقع الاستخدامwhereلتحديد قيدٍ لمتحول النوع المُعمَّم
المُحدِّدات (Modifier Keywords)
قد تستخدم الكلمات الآتية كمحددات في التصريح ما أو كمعرفات في سياق آخر:
actualللإشارة إلىتعريف الاستخدام الخاص بالمنصة في المشاريع متعددة المنصاتabstractتحديد الصنف أو العنصر من النوع المجردannotationللتصريح عن صنف التوصيفcompanionللتصريح عن الكائن المرافقconstلجعل الخاصّيّة كثابتٍ أثناء التنفيذcrossinlineلمنع الرجوع غير المحلي في تعبير lambda الممرر إلى الدالة السطريةdataلإعلام المترجم بتوليد عناصر قانونية للصنفenumللتصريح عن الثوابت المتعددةexpectلجعل التصريح خاصًا بالمنصة ليتوقع تعريف الاستخدام في وحدة المنصةexternalلجعل التصريح قابلًا لتعريف الاستخدام خارج Kotlin (عبر JNI أو في JavaScript)finalلمنع إعادة تعريف العنصرinfixللسماح باستدعاء الدالة بالتدوين الداخليّinlineلإعلام المترجم بتضمين الدالة وتعبير lambda الممرر لها في موقع الاستدعاءinnerللسماح بالعودة إلى كائن الصنف الخارجي من الصنف المتداخلinternalلتحديد التصريح كمرئيّ في الوحدة الحاليةlateinitتسمح بتهيئة الخاصية غير الفارغة خارج البانيnoinlineتمنع التضمين السطري لتعبير lambda الممرر إلى الدالة السطريةopenللسماح بإنشاء أصناف فرعية من الصنف أو إعادة تعريف عنصرٍ من الصنفoperatorلتحديد الدالة كتحميلٍ زائد للمعامل أو تعريف استخدام الاصطلاحoutلجعل نوع المتحول covariantoverrideلتحديد العنصر كإعادة تعريفٍ لعنصر في الصنف الأعلىprivateلجعل التصريح مرئيًا في الصنف الحالي أو الملف فقطprotectedلجعل التصريح مرئيًا في الصنف الحالي وأصنافه الفرعيةpublicلجعل التصريح مرئيًا في كل مكانreifiedلجعل متحول النوع للدالة السطرية متاحًا للوصول أثناء التنفيذsealedللتصريح عن صنف مغلق (محدود الأصناف الفرعية)suspendتحديد الدالة أو lambda كنوع مؤجل (قابلة للاستخدام كروتينات مساعدة)tailrecلجعل الدالة تعاودية (تسمح للمترجم باستخدام التكرار بدلًا من التعاودية)varargللسماح بتمرير عدد متغير من المتحولات للمتحولات الوسيطة
المُعرِّفات الخاصّة (Special Identifiers)
معرفة لدى المترجم في بعض السياقات ويمكن استخدامها كمعرِّفات في سياقات أخرى:
fieldتستخدم داخل عمليات الوصول إلى الخاصية للإشارة إلى الحقل المساعد للخاصيةitتستخدم داخل lambda للإشارة إلى متحولها الوحيد ضمنيًا
المُعامِلات والرموز الخاصّة (Operators and Special Symbols)
+,-,*,/,%للقيام بالعمليات الحسابية*يُستخدم أيضًا لتمرير مصفوفة إلى متحولٍ متغير العدد
=- معامل الإسناد
- لتحديد القيم الافتراضية للمتحولات
+=,-=,*=,/=,%=معاملات الإسناد المُحسنة++,--معاملات الزيادة والنقصان&&,||,!معاملات العمليات المنطقية and و or و not (وللقيام بالعمليات على مستوى الخانة الثنائية تستخدم الدالة الداخلية الموافقة)==,!=معاملات التساوي (تترجم لاستدعاءاتٍ للدالةequals() وذلك للأنواع غير الأساسية)===,!==معاملات التساوي بالمرجعية<,>,<=,>=معاملات المقارنة (تترجم لاستدعاءاتٍ للدالةcompareTo() وذلك للأنواع غير الأساسية)[,]معامل الوصول المفهرس (تترجم لاستدعاءاتٍ للدالةgetوset)!!للتأكيد على أن التعبير ليس بقيمة null?.للقيام باستدعاءٍ آمنٍ (استدعاء تابع أو الوصول إلى الخاصية عندما لا يحتوي المستقبل على القيمة null?:الحصول على القيمة بالطرف الأيمن إن كانت القيمة بالطرف الأيسر null (معامل elvis)::لإنشاء مرجعية عنصر أو مرجعية صنف..لإنشاء المجال:للفصل ما بين الاسم والنوع في التصريحات?لجعل النوع nullable->- للفصل بين المتحولات وبنية تعبير lambda
- للفصل بين المتحولات وتصريح النوع المعاد في نوع الدالة
- للفصل ما بين الشرط والبنية في فرع الحالات في تعبير when
@- إنشاء توصيف
- مرجعية لتسمية حلقة
- مرجعية لتسمية lambda
- مرجعية لتعبير this من مجال خارجي
- مرجعية للصنف الأعلى الخارجي
;للفصل ما بين التعليمات المتعددة في نفس السطر$مرجعية لمتحولٍ أو تعريف في قالب السلسلة النصية_- بديل عن المتحول غير المستخدم في تعبير lambda
- بديل عن المتحول غير المستخدم في التصريح بالتفكيك