الفرق بين المراجعتين لصفحة: «Kotlin/keyword reference»
< Kotlin
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الكلمات المفتاحية (Keywords) والمعاملات (Operators) في لغة Kotlin}}</noinclude> == الكلمات المفتاح...' |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:الكلمات المفتاحية (Keywords) والمعاملات (Operators) في لغة Kotlin}}</noinclude> | <noinclude>{{DISPLAYTITLE:الكلمات المفتاحية (Keywords) والمعاملات (Operators) في لغة Kotlin}}</noinclude> | ||
== الكلمات المفتاحيّة الثابتة (Hard Keywords) == | == الكلمات المفتاحيّة الثابتة (Hard Keywords) == | ||
تُعدُّ الكلمات الآتية كلماتٍ مفتاحيّةً | تُعدُّ الكلمات الآتية كلماتٍ مفتاحيّةً في لغة Kotlin وليس ممكنًا استخدامها كمُعرِّفات (identifiers): | ||
* <code>as</code> | * <code>as</code> | ||
** تُستخدَم | ** تُستخدَم في [[Kotlin/typecasts|التحويلات ما بين الأنواع (typecasts)]] | ||
** تُحدِّد تسميةً بديلةً (alias) عند عملية الاستيراد (import) | ** تُحدِّد [[Kotlin/packages|تسميةً بديلةً (alias) عند عملية الاستيراد (import)]] | ||
* <code>as?</code> | * <code>as?</code> [[Kotlin/typecasts|للتحويلات الحافظة للنوع (safe type casts)]] | ||
* <code>break</code> | * <code>break</code> <nowiki/>[[Kotlin/returns|لإنهاء تنفيذ الحلقات (loops)]] | ||
* <code>class</code> للتصريح عن | * <code>class</code> للتصريح عن [[Kotlin/classes|الأصناف]] | ||
* <code>continue</code> للاستمرار بالخطوة التالية لأقرب حلقة محيطة | * <code>continue</code> [[Kotlin/returns|للاستمرار بالخطوة التالية لأقرب حلقة محيطة (enclosing)]] | ||
* <code>do</code> للبدء بحلقة do/while (والتي | * <code>do</code> للبدء [[Kotlin/control flow|بحلقة do/while]] (والتي يُختبَر الشرط فيها لاحقًا) | ||
* <code>else</code> لتعريف فرعٍ من تعبير الشرط if والذي | * <code>else</code> لتعريف فرعٍ (branch) من [[Kotlin/control flow|تعبير الشرط <code>if</code>]] والذي سيُنفَّذ عندما يكون الشرط بالقيمة <code>false</code> | ||
* <code>false</code> لتحديد القيمة false | * <code>false</code> لتحديد القيمة <code>false</code> من [[Kotlin/basic types|النوع الثنائيّ (boolean)]] | ||
* <code>for</code> | * <code>for</code> للبدء [[Kotlin/control flow|بحلقة for]] | ||
* <code>fun</code> للتصريح عن الدالة | * <code>fun</code> للتصريح عن [[Kotlin/functions|الدالة (function)]] | ||
* <code>if</code> للبدء بتعبير if | * <code>if</code> للبدء [[Kotlin/control flow|بتعبير الشرط <code>if</code>]] | ||
* <code>in</code> | * <code>in</code> | ||
** لتحديد الكائن الذي يتم | ** لتحديد الكائن (object) الذي يتم المرور بعناصره (iterated) في [[Kotlin/control flow|حلقة for]] | ||
** | ** يُستخدَم كمعاملٍ ضمنيّ (infix) للتحقُّق من انتماء القيمة إلى [[Kotlin/ranges|مجالٍ (range)]] أو مجموعةٍ (collection) أو [[Kotlin/operator overloading|أيّ كيانٍ (entity) يُعرِّف التابع <code>contains</code>]] | ||
** | ** يُستخدَم في [[Kotlin/control flow|تعبير <code>when</code>]] ولنفس الهدف السابق | ||
** | ** يجعل متحوّل النوع [[Kotlin/generics|contravariant]] | ||
** | ** | ||
* <code>!in</code> | * <code>!in</code> | ||
** | ** يُستخدَم كمعاملٍ للتأكّد من أن القيمة لا تنتمي إلى [[Kotlin/ranges|مجالٍ (range)]] أو مجموعةٍ (collection) أو [[Kotlin/operator overloading|أيّ كيانٍ (entity) يُعرِّف التابع <code>contains</code>]] | ||
** | ** يُستخدَم في [[Kotlin/control flow|تعبير <code>when</code>]] ولنفس الهدف السابق | ||
* <code>interface</code> للتصريح عن | * <code>interface</code> للتصريح عن الواجهة | ||
* <code>is</code> | * <code>is</code> | ||
** | ** للتحقُّق من أنّ [[Kotlin/typecasts|القيمة من نوعٍ (type) مُحدَّدٍ]] | ||
** | ** يُستخدَم في [[Kotlin/control flow|تعبير <code>when</code>]] ولنفس الهدف السابق | ||
* <code>!is</code> | * <code>!is</code> | ||
** | ** للتحقُّق من أنّ [[Kotlin/typecasts|القيمة ليست من نوعٍ (type) مُحدَّدٍ]] | ||
** | ** يُستخدَم في [[Kotlin/control flow|تعبير <code>when</code>]] ولنفس الهدف السابق | ||
* <code>null</code> هي قيمة ثابتة | * <code>null</code> هي قيمة ثابتة (constant) تمثِّل مرجعيةً كائنيةً (object reference) لا تشير إلى أيّ كائنٍ. | ||
* <code>object</code> للتصريح عن الصنف | * <code>object</code> للتصريح عن [[Kotlin/object declarations|الصنف (class) والكائن (instance)]] منه معًا | ||
* <code>package</code> لتحديد الحزمة | * <code>package</code> لتحديد [[Kotlin/packages|الحزمة]] الحاليّة للملف (file) | ||
* <code>return</code> | * <code>return</code> <nowiki/>[[Kotlin/returns|للعودة من أقرب دالةٍ محيطةٍ (enclosing function) أو دالةٍ مجهولةٍ (anonymous function)]] | ||
* <code>super</code> | * <code>super</code> | ||
** تشير إلى تعريف استخدام الصنف الأعلى للتابع أو | ** تشير إلى [[Kotlin/classes|تعريف استخدام (implementation) الصنف الأعلى (superclass) للتابع (method) أو الخاصّيّة (property)]] | ||
** لاستدعاء باني الصنف الأعلى من الباني | ** [[Kotlin/classes|لاستدعاء باني الصنف الأعلى (superclass constructor) من الباني الثانويّ (secondary constructor)]] | ||
* <code>this</code> | * <code>this</code> | ||
** تشير إلى | ** تشير إلى [[Kotlin/this expressions|المُستقبِل (receiver) الحاليّ]] | ||
** | ** [[Kotlin/classes|لاستدعاء بانٍ (constructor) آخر من نفس الصنف (class) عبر بانٍ ثانويّ (secondary constructor)]] | ||
* <code>throw</code> لرمي | * <code>throw</code> لرمي [[Kotlin/exceptions|استثناءٍ (exception)]] | ||
* <code>true</code> لتحديد القيمة true | * <code>true</code> لتحديد القيمة <code>true</code> من [[Kotlin/basic types|النوع الثنائيّ (boolean)]] | ||
* <code>try</code> لبدء قسم التعامل مع الاستثناء | * <code>try</code> لبدء [[Kotlin/extensions|قسم التعامل مع الاستثناء (exception)]] | ||
* <code>typealias</code> للتصريح عن التسمية البديلة للأنواع | * <code>typealias</code> للتصريح عن [[Kotlin/type aliases|التسمية البديلة (alias) للأنواع]] | ||
* <code>val</code> للتصريح عن | * <code>val</code> للتصريح عن [[Kotlin/properties|خاصّيّةٍ للقراءة فقط (read-only)]] أو [[Kotlin/basic syntax|متحوّلٍ محليّ (local variable)]] | ||
* <code>var</code> للتصريح عن | * <code>var</code> للتصريح عن [[Kotlin/properties|خاصّيّة متغيّرةٍ (mutable)]] أو [[Kotlin/basic syntax|متحوّلٍ محليّ (local variable)]] | ||
* <code>when</code> للبدء بتعبير when | * <code>when</code> للبدء [[Kotlin/control flow|بتعبير <code>when</code>]] (لتنفيذ إحدى الحالات الفرعيّة الواردة) | ||
* <code>while</code> للبدء بحلقة while ( | * <code>while</code> للبدء [[Kotlin/control flow|بحلقة <code>while</code>]] (التي تختبِر الشرط أولًا) | ||
== الكلمات المفتاحيّة المرنة (Soft Keywords) == | == الكلمات المفتاحيّة المرنة (Soft Keywords) == |
مراجعة 05:23، 25 مارس 2018
الكلمات المفتاحيّة الثابتة (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
- بديل عن المتحول غير المستخدم في التصريح بالتفكيك