الفرق بين المراجعتين ل"Kotlin/keyword reference"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<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 والذي سينفذ عندما يكون الشرط بالقيمة false
+
* <code>else</code> لتعريف فرعٍ (branch) من [[Kotlin/control flow|تعبير الشرط <code>if</code>]] والذي سيُنفَّذ عندما يكون الشرط بالقيمة <code>false</code>
* <code>false</code> لتحديد القيمة false في النوع الثنائي (boolean)
+
* <code>false</code> لتحديد القيمة <code>false</code> من [[Kotlin/basic types|النوع الثنائيّ (boolean)]]
* <code>for</code> البدء بحلقة for
+
* <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>
** لتحديد الكائن الذي يتم عبوره في حلقة for
+
** لتحديد الكائن (object) الذي يتم المرور بعناصره (iterated) في [[Kotlin/control flow|حلقة for]]
** تستخدم كمعامل ضمنيّ للتحقق من انتماء القيمة إلى مجالٍ أو مجموعةٍ أو أي كيانٍ يعرف التابع contains
+
** يُستخدَم كمعاملٍ ضمنيّ (infix) للتحقُّق من انتماء القيمة إلى [[Kotlin/ranges|مجالٍ (range)]] أو مجموعةٍ (collection) أو [[Kotlin/operator overloading|أيّ كيانٍ (entity) يُعرِّف التابع <code>contains</code>]]
** تستخدم في تعبير when بنفس الهدف السابق
+
** يُستخدَم في [[Kotlin/control flow|تعبير <code>when</code>]] ولنفس الهدف السابق
** تجعل متحول النوع contravariant
+
** يجعل متحوّل النوع [[Kotlin/generics|contravariant]]
 
**
 
**
  
* <code>!in</code>
+
* <code>!in</code>
** يستخدم كمعاملٍ للتأكد من أن القيمة لا تنتمي إلى مجالٍ أو مجموعةٍ أو أي كيانٍ يعرف التابع contains
+
** يُستخدَم كمعاملٍ للتأكّد من أن القيمة لا تنتمي إلى [[Kotlin/ranges|مجالٍ (range)]] أو مجموعةٍ (collection) أو [[Kotlin/operator overloading|أيّ كيانٍ (entity) يُعرِّف التابع <code>contains</code>]]
** تستخدم في تعبير when بنفس الهدف السابق
+
** يُستخدَم في [[Kotlin/control flow|تعبير <code>when</code>]] ولنفس الهدف السابق
* <code>interface</code> للتصريح عن واجهة
+
* <code>interface</code> للتصريح عن الواجهة
 
* <code>is</code>
 
* <code>is</code>
** للتحقق من أن القيمة لها نوع محدد
+
** للتحقُّق من أنّ [[Kotlin/typecasts|القيمة من نوعٍ (type) مُحدَّدٍ]]
** تستخدم في تعبير when بنفس الهدف السابق
+
** يُستخدَم في [[Kotlin/control flow|تعبير <code>when</code>]] ولنفس الهدف السابق
* <code>!is</code>
+
* <code>!is</code>
** للتحقق من أن القيمة ليس لها نوع محدد
+
** للتحقُّق من أنّ [[Kotlin/typecasts|القيمة ليست من نوعٍ (type) مُحدَّدٍ]]
** تستخدم في تعبير when بنفس الهدف السابق
+
** يُستخدَم في [[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 في النوع الثنائي (boolean)
+
* <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):

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

مصادر