الكلمات المفتاحية (Keywords) والمعاملات (Operators) في لغة Kotlin
< Kotlin
الكلمات المفتاحيّة الثابتة (Hard Keywords)
تُعدُّ الكلمات الآتية كلماتٍ مفتاحيّةً في لغة Kotlin وليس ممكنًا استخدامها كمُعرِّفات (identifiers):
break
لإنهاء تنفيذ الحلقات (loops)class
للتصريح عن الأصنافcontinue
للاستمرار بالخطوة التالية لأقرب حلقة محيطة (enclosing)do
للبدء بحلقة do/while (والتي يُختبَر الشرط فيها لاحقًا)else
لتعريف فرعٍ (branch) من تعبير الشرطif
والذي سيُنفَّذ عندما يكون الشرط بالقيمةfalse
false
لتحديد القيمةfalse
من النوع الثنائيّ (boolean)for
للبدء بحلقة forfun
للتصريح عن الدالة (function)if
للبدء بتعبير الشرطif
in
- لتحديد الكائن (object) الذي يتم المرور بعناصره (iterated) في حلقة for
- يُستخدَم كمعاملٍ ضمنيّ (infix) للتحقُّق من انتماء القيمة إلى مجالٍ (range) أو مجموعةٍ (collection) أو أيّ كيانٍ (entity) يُعرِّف التابع
contains
- يُستخدَم في تعبير
when
ولنفس الهدف السابق - يجعل متحوّل النوع contravariant
!in
- يُستخدَم كمعاملٍ للتأكّد من أن القيمة لا تنتمي إلى مجالٍ (range) أو مجموعةٍ (collection) أو أيّ كيانٍ (entity) يُعرِّف التابع
contains
- يُستخدَم في تعبير
when
ولنفس الهدف السابق
- يُستخدَم كمعاملٍ للتأكّد من أن القيمة لا تنتمي إلى مجالٍ (range) أو مجموعةٍ (collection) أو أيّ كيانٍ (entity) يُعرِّف التابع
interface
للتصريح عن الواجهةis
- للتحقُّق من أنّ القيمة من نوعٍ (type) مُحدَّدٍ
- يُستخدَم في تعبير
when
ولنفس الهدف السابق
!is
- للتحقُّق من أنّ القيمة ليست من نوعٍ (type) مُحدَّدٍ
- يُستخدَم في تعبير
when
ولنفس الهدف السابق
null
هي قيمة ثابتة (constant) تمثِّل مرجعيةً كائنيةً (object reference) لا تشير إلى أيّ كائنٍ.object
للتصريح عن الصنف (class) والكائن (instance) منه معًاpackage
لتحديد الحزمة الحاليّة للملف (file)return
للعودة من أقرب دالةٍ محيطةٍ (enclosing function) أو دالةٍ مجهولةٍ (anonymous function)super
this
throw
لرمي استثناءٍ (exception)true
لتحديد القيمةtrue
من النوع الثنائيّ (boolean)try
لبدء قسم التعامل مع الاستثناء (exception)typealias
للتصريح عن التسمية البديلة (alias) للأنواعval
للتصريح عن خاصّيّةٍ للقراءة فقط (read-only) أو متحوّلٍ محليّ (local variable)var
للتصريح عن خاصّيّة متغيّرةٍ (mutable) أو متحوّلٍ محليّ (local variable)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
- بديل عن المتحول غير المستخدم في التصريح بالتفكيك