الكلمات المفتاحية (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
- بديل عن المتحول غير المستخدم في التصريح بالتفكيك