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

من موسوعة حسوب
مراجعة 18:48، 24 مارس 2018 بواسطة Nourtam (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الكلمات المفتاحية (Keywords) والمعاملات (Operators) في لغة Kotlin}}</noinclude> == الكلمات المفتاح...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

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

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

  • as
    • تُستخدَم للتحويلات ما بين الأنواع
    • تُحدِّد تسميةً بديلةً (alias) عند عملية الاستيراد (import)
  • as? للتحويلات الحافظة للنوع
  • break لإنهاء تنفيذ الحلقة
  • class للتصريح عن الصنف
  • continue  للاستمرار بالخطوة التالية لأقرب حلقة محيطة
  • do للبدء بحلقة do/while (والتي يختبر الشرط فيها لاحقًا)
  • else لتعريف فرعٍ من تعبير الشرط if والذي سينفذ عندما يكون الشرط بالقيمة false
  • false لتحديد القيمة false في النوع الثنائي (boolean)
  • for البدء بحلقة for
  • fun للتصريح عن الدالة
  • if للبدء بتعبير if
  • in
    • لتحديد الكائن الذي يتم عبوره في حلقة 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/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
    • بديل عن المتحول غير المستخدم في التصريح بالتفكيك

مصادر