الكلمات المفتاحية (Keywords) والمعاملات (Operators) في لغة Kotlin

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث

الكلمات المفتاحيّة الثابتة (Hard Keywords)

تُعدُّ الكلمات الآتية كلماتٍ مفتاحيّةً في لغة Kotlin وليس ممكنًا استخدامها كمُعرِّفات (identifiers):

الكلمات المفتاحيّة المرنة (Soft Keywords)

قد تستخدم الكلمات الآتية ككلماتٍ مفتاحية في سياق ما أو كمعرفات في سياق آخر:

  • by
    • لتعميم تعريف استخدام الواجهة إلى كائن آخر
    • لتعميم تعريف الاستخدام لعمليات الوصول للخاصية إلى كائن آخر
  • catch  للبدء بالجزء الذي يعالج نوع استثناء محدد
  • constructor للتصريح عن بانٍ أساسي أو ثانوي
  • delegate يستخدم كتوصيف لهدف موقع الاستخدام
  • dynamic كمرجعية لنوع ديناميكي في شيفرة Kotlin/JS
  • field تستخدم كتوصيف لهدف موقع الاستخدام
  • fileتستخدم كتوصيف لهدف موقع الاستخدام
  • finally للبدء بالجزء الذي سيُنفذ عند الخروج من الجزء try
  • get
    • لتعريف 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 لجعل نوع المتحول covariant
  • override لتحديد العنصر كإعادة تعريفٍ لعنصر في الصنف الأعلى
  • 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
    • بديل عن المتحول غير المستخدم في التصريح بالتفكيك

مصادر