الفرق بين المراجعتين لصفحة: «Kotlin/keyword reference»
< Kotlin
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الكلمات المفتاحية (Keywords) والمعاملات (Operators) في لغة Kotlin}}</noinclude> == الكلمات المفتاح...' |
ط تعديل مصطلح متحول |
||
(4 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 1: | سطر 1: | ||
== الكلمات المفتاحيّة الثابتة (Hard Keywords)== | |||
== | تُعدُّ الكلمات الآتية كلماتٍ مفتاحيّةً في لغة Kotlin وليس ممكنًا استخدامها كمُعرِّفات (identifiers): | ||
تُعدُّ الكلمات الآتية كلماتٍ مفتاحيّةً | *<code>as</code> | ||
* <code>as</code> | **تُستخدَم في [[Kotlin/typecasts|التحويلات ما بين الأنواع (typecasts)]] | ||
** تُستخدَم | **تُحدِّد [[Kotlin/packages|تسميةً بديلةً (alias) عند عملية الاستيراد (import)]] | ||
** تُحدِّد تسميةً بديلةً (alias) عند عملية الاستيراد (import) | *<code>as?</code> [[Kotlin/typecasts|للتحويلات الحافظة للنوع (safe type casts)]] | ||
* <code>as?</code> | |||
* <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> هي قيمة ثابتة (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> للبدء [[Kotlin/control flow|بتعبير <code>when</code>]] (لتنفيذ إحدى الحالات الفرعيّة الواردة) | |||
* <code>while</code> للبدء | *<code>while</code> للبدء [[Kotlin/control flow|بحلقة <code>while</code>]] (التي تختبِر الشرط أولًا) | ||
==الكلمات المفتاحيّة المرنة (Soft Keywords)== | |||
== الكلمات المفتاحيّة المرنة (Soft Keywords) == | قد تُستخدَم الكلمات الآتية ككلماتٍ مفتاحيّةٍ في سياقٍ (context) ما أو كمُعرِّفاتٍ (identifiers) في سياقٍ آخر: | ||
قد | *<code>by</code> | ||
* <code>by</code> | **[[Kotlin/delegation|لتعميم (delegate) تعريف استخدام (implementation) الواجهة إلى كائنٍ (object) آخر]] | ||
** لتعميم تعريف استخدام الواجهة إلى | **[[Kotlin/delegated properties|لتعميم (delegate) تعريف الاستخدام (implementation) لعمليات الوصول للخاصّيّة (property accessors) إلى كائنٍ (object) آخر]] | ||
** لتعميم تعريف الاستخدام لعمليات الوصول | *<code>catch</code> للبدء بالقسم الذي [[Kotlin/exceptions|يُعالِج (handle) نوع استثناءٍ (exception) مُحدَّد]] | ||
* <code>catch</code> للبدء | *<code>constructor</code> للتصريح عن [[Kotlin/classes|بانٍ أساسيّ (primary) أو ثانويّ (secondary)]] | ||
* <code>constructor</code> للتصريح عن | *<code>delegate</code> تُستخدَم [[Kotlin/annotations|كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)]] | ||
* <code>delegate</code> | *<code>dynamic</code> تُستخدَم كمرجعيةٍ (reference) لنوعٍ ديناميكيٍّ في شيفرة Kotlin/JS | ||
* <code>dynamic</code> | *<code>field</code> تُستخدَم [[Kotlin/annotations|كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)]] | ||
* <code>field</code> | *<code>file</code>تُستخدَم [[Kotlin/annotations|كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)]] | ||
* <code>file</code> | *<code>finally</code> للبدء [[Kotlin/exceptions|بالقسم الذي سيُنفَّذُ عند الخروج من الجزء <code>try</code>]] | ||
* <code>finally</code> للبدء | *<code>get</code> | ||
**لتعريف الوصول [[Kotlin/properties|عبر getter للخاصّيّة]] | |||
** لتعريف getter | **تُستخدَم [[Kotlin/annotations|كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)]] | ||
** | *<code>import</code> <nowiki/>[[Kotlin/packages|لاستيراد التصريح من حزمةٍ أخرى للملفّ (file) الحالي]] | ||
*<code>init</code> للبدء [[Kotlin/classes|بجزء التهيئة (initializer block)]] | |||
* <code>init</code> للبدء بجزء التهيئة | *<code>param</code> تُستخدَم [[Kotlin/annotations|كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)]] | ||
* <code>param</code> | *<code>property</code>تُستخدَم [[Kotlin/annotations|كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)]] | ||
* <code>property</code> | *<code>receiver</code>تُستخدَم [[Kotlin/annotations|كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)]] | ||
* <code>receiver</code> | *<code>set</code> | ||
* <code>set</code> | **لتعريف الوصول [[Kotlin/properties|عبر setter للخاصّيّة]] | ||
** لتعريف setter | **تُستخدَم [[Kotlin/annotations|كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)]] | ||
** | *<code>setparam</code>تُستخدَم [[Kotlin/annotations|كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)]] | ||
*<code>where</code> لتحديد [[Kotlin/generics|القيود (constraints) لمعامل النوع المُعمَّم]] | |||
* <code>where</code> لتحديد | ==المُحدِّدات (Modifier Keywords)== | ||
قد تُستخدَم الكلمات الآتية كمُحدِّداتٍ (modifiers) في التصريحات، أو كمُعرِّفاتٍ (identifiers) في أيّ سياقٍ آخر: | |||
== المُحدِّدات (Modifier Keywords) == | *<code>actual</code> للإشارة إلى تعريف الاستخدام (implementation) الخاصّ بالمنصّة (platform) في [[Kotlin/multiplatform|المشاريع متعدِّدة المنصّات (multiplatforms)]] | ||
قد | *<code>abstract</code> لجعل [[Kotlin/classes|الصنف (class) (أو عنصرٍ منه) مُجرَّدًا]] | ||
* <code>actual</code> للإشارة | *<code>annotation</code> للتصريح عن [[Kotlin/annotations|صنف (class) التوصيف]] | ||
* <code>abstract</code> | *<code>companion</code>للتصريح عن [[Kotlin/object declarations|الكائن المرافق]] | ||
* <code>annotation</code> للتصريح عن صنف التوصيف | *<code>const</code> لجعل [[Kotlin/properties|الخاصّيّة (property) كثابتٍ أثناء التنفيذ (compile-time constant)]] | ||
* <code>companion</code>للتصريح عن الكائن المرافق | *<code>crossinline</code> لمنع [[Kotlin/inline functions|الرجوع غير المحليّ (non-local return) في تعبير lambda المُمرَّر إلى الدالة المباشرة (inline function)]] | ||
* <code>const</code> لجعل الخاصّيّة كثابتٍ أثناء التنفيذ | *<code>data</code> <nowiki/>[[Kotlin/data classes|لإعلام المُترجِم (compiler) بتوليد عناصر قانونيةٍ للصنف (class)]] | ||
* <code>crossinline</code> لمنع | *<code>enum</code> للتصريح عن [[Kotlin/enum classes|الثوابت المُتعدِّدة (enumeration)]] | ||
* <code>data</code> | *<code>expect</code>لجعل [[Kotlin/multiplatform|التصريح خاصًا بالمنصّة (platform-specific) إذ يُتوقَّع تعريف استخدامه (implementation) في وحدة المنصّة]] | ||
* <code>enum</code> للتصريح عن الثوابت | *<code>external</code> لجعل التصريح قابلًا لتعريف الاستخدام (implementation) خارج Kotlin (عبر JNI أو في JavaScript) | ||
* <code>expect</code>لجعل التصريح خاصًا | *<code>final</code> لمنع [[Kotlin/classes|إعادة تعريف (overriding) عنصر الصنف (class member)]] | ||
* <code>external</code> | *<code>infix</code> للسماح [[Kotlin/functions|باستدعاء الدالة (function) بالتدوين الداخليّ (infix notation)]] | ||
* <code>final</code> لمنع إعادة تعريف | *<code>inline</code> لإعلام المُترجِم [[Kotlin/inline functions|بتضمين الدالة (function) وتعبير lambda المُمرَّر لها مباشرةً (inline) في موقع الاستدعاء (call site)]] | ||
* <code>infix</code> للسماح باستدعاء الدالة بالتدوين الداخليّ | *<code>inner</code> للسماح بالإشارة لكائن الصنف الخارجيّ (outer class instance) من [[Kotlin/nested classes|الصنف المتداخِل (nested)]] | ||
* <code>inline</code> لإعلام | *<code>internal</code> لجعل التصريح [[Kotlin/visibility modifiers|مرئيًّا في الوحدة (module) الحاليّة]] | ||
* <code>inner</code> للسماح | *<code>lateinit</code> تسمح [[Kotlin/properties|بتهيئة (initializing) الخاصّيّة غير الفارغة (non-null property) خارج الباني (constructor)]] | ||
* <code>internal</code> | *<code>noinline</code> تمنع [[Kotlin/inline functions|التضمين المباشر (inlining) لتعبير lambda المُمرَّر إلى الدالة (function) المباشرة]] | ||
* <code>lateinit</code> تسمح بتهيئة | *<code>open</code> للسماح بإنشاء [[Kotlin/classes|أصناف فرعيّة (subclasses) من الصنف أو إعادة تعريف (override) عنصرٍ منه]] | ||
* <code>noinline</code> تمنع التضمين | *<code>operator</code> لتحديد الدالة [[Kotlin/operator overloading|كتحميلٍ زائدٍ (overloading) للمعامِل أو تعريف استخدام اصطلاحيّ]] | ||
* <code>open</code> للسماح بإنشاء أصناف | *<code>out</code> لجعل معامل النوع [[Kotlin/generics|covariant]] | ||
* <code>operator</code> لتحديد الدالة كتحميلٍ | *<code>override</code> لجعل العنصر [[Kotlin/classes|كإعادة تعريفٍ (overriding) لعنصرٍ من الصنف الأعلى (superclass)]] | ||
* <code>out</code> لجعل | *<code>private</code> لجعل التصريح [[Kotlin/visibility modifiers|مرئيًا في الصنف (class) الحاليّ أو الملف (file) فقط]] | ||
* <code>override</code> | *<code>protected</code> لجعل التصريح [[Kotlin/visibility modifiers|مرئيًا في الصنف (class) الحاليّ أو أصنافه الفرعيّة (subclasses)]] | ||
* <code>private</code> لجعل التصريح مرئيًا في الصنف | *<code>public</code> لجعل التصريح [[Kotlin/visibility modifiers|مرئيًا في كلِّ مكان]] | ||
* <code>protected</code> لجعل التصريح مرئيًا في الصنف | *<code>reified</code> لجعل [[Kotlin/inline functions|معامل النوع للدالة المباشرة (inline function) متاحًا للوصول أثناء التنفيذ (runtime)]] | ||
* <code>public</code> لجعل التصريح مرئيًا في | *<code>sealed</code> للتصريح عن [[Kotlin/sealed classes|صنفٍ مغلقٍ ( sealed class) (محدود الأصناف الفرعيّة [subclasses])]] | ||
* <code>reified</code> لجعل | *<code>suspend</code> تحديد الدالة (function) أو تعبير lambda [[Kotlin/coroutines|كنوع تأخيرٍ (قابلٍ للاستخدام كروتيناتٍ مساعدة [coroutines])]] | ||
* <code>sealed</code> للتصريح عن | *<code>tailrec</code> لجعل الدالة [[Kotlin/functions|تعاوديّةً (tail-recursive)]] (تسمح للمترجِم [compiler] باستخدام التكرار [iteration] بدلًا من التعاودية [recursion]) | ||
* <code>suspend</code> تحديد الدالة أو lambda كنوع | *<code>vararg</code> للسماح [[Kotlin/functions|بتمرير عددٍ متغيّرٍ من الوسائط (arguments) للمعامل (parameter)]] | ||
* <code>tailrec</code> لجعل الدالة | ==المُعرِّفات الخاصّة (Special Identifiers)== | ||
* <code>vararg</code> للسماح بتمرير | وهي مُعرَّفةٌ لدى المُترجِم (compiler) بسياقٍ معيّنٍ ويمكن استخدامها كمعرِّفات (identifiers) في سياقٍ آخر: | ||
*<code>field</code> تُستخدَم داخل عمليات الوصول (accessors) إلى الخاصّيّة (property) للإشارة إلى [[Kotlin/properties|الحقل المساعد (backing field) للخاصّيّة]] | |||
== المُعرِّفات الخاصّة (Special Identifiers) == | *<code>it</code> تُستخدَم داخل [[Kotlin/lambdas|تعبير lambda للإشارة إلى معاملها الوحيد ضمنيًا (implicitly)]] | ||
==المُعامِلات والرموز الخاصّة (Operators and Special Symbols)== | |||
* <code>field</code> | *<code>+</code> و <code>-</code> و <code>*</code> و <code>/</code> و <code>%</code> لتنفيذ العمليات الحسابيّة | ||
* <code>it</code> | **<code>*</code> يُستخدَم أيضًا [[Kotlin/functions|لتمرير مصفوفةٍ (array) إلى معاملٍ (parameter) متغيّرِ العدد]] | ||
*<code>=</code> | |||
== المُعامِلات والرموز الخاصّة (Operators and Special Symbols) == | **معامل الإسناد (assignment) | ||
* <code>+</code> | **لتحديد [[Kotlin/functions|القيم الافتراضيّة للمعاملات (parameters)]] | ||
** <code>*</code> | *<code>+=</code> و <code>-=</code> و <code>*=</code> و <code>/=</code> و <code>%=</code> [[Kotlin/operator overloading|معامِلات الإسناد المُحسَّنة (augmented assignment)]] | ||
* <code>=</code> | *<code>++</code> و<code>--</code> معاملات [[Kotlin/operator overloading|الزيادة (increment) والنقصان (decrement)]] | ||
** معامل الإسناد | *<code>&&</code> و <code>||</code> و <code>!</code> معاملات العمليّات المنطقيّة and و or و not (وللقيام بالعمليات على مستوى الخانة الثنائيّة [bitwise] [[Kotlin/basic types|تُستخدَم الدالة الموافقة بالصيغة الداخليّة [infix function])]] | ||
** لتحديد القيم | *<code>==</code> و <code>!=</code> [[Kotlin/operator overloading|معاملات التساوي]] (تُترجَم لاستدعاءاتٍ للدالة <code>equals()</code> وذلك للأنواع غير الأساسيّة [non-primitive]) | ||
* <code>+=</code> | *<code>===</code> و <code>!==</code> معاملات [[Kotlin/equality|التساوي بالمرجعيّة (referential equality)]] | ||
* <code>++</code> | *<code><</code> و <code>></code> و <code><=</code> و <code>>=</code> [[Kotlin/operator overloading|معاملات المقارنة]] (تُترجَم لاستدعاءاتٍ للدالة <code>compareTo()</code> وذلك للأنواع غير الأساسيّة [non-primitive]) | ||
* <code>&&</code> | *<code>[</code>و <code>]</code> معامل [[Kotlin/operator overloading|الوصول المُفهرَس (indexed)]] (تُترجَم لاستدعاءاتٍ للدالتين <code>get</code> و <code>set</code>) | ||
* <code>==</code> | *<code>!!</code> للتأكيد على أنّ [[Kotlin/null safety|التعبير ليس بقيمة <code>null</code>]] | ||
* <code>===</code> | *<code>?.</code> [[Kotlin/null safety|للاستدعاء الآمن (safe call)]] (استدعاء تابعٍ [method] أو الوصول إلى الخاصّيّة [property] عندما لا يكون المُستقبِل [receiver] بالقيمة <code>null</code>) | ||
* <code><</code> | *<code>?:</code> الحصول على القيمة بالطرف الأيمن إن كانت القيمة بالطرف الأيسر <code>null</code> ([[Kotlin/null safety|معامل elvis]]) | ||
* <code>[</code> | *<code>::</code> لإنشاء [[Kotlin/reflection|مرجعيّة عنصرٍ (member reference) أو مرجعيّة صنفٍ (class reference)]] | ||
* <code>!!</code> للتأكيد على | *<code>..</code> لإنشاء [[Kotlin/ranges|المجال (range)]] | ||
* <code>?.</code> | *<code>:</code> للفصل ما بين الاسم والنوع (type) في التصريحات | ||
* <code>?:</code> | *<code>?</code> لجعل [[Kotlin/null safety|النوع nullable]] (يقبل القيمة الفارغة null) | ||
* <code>::</code> لإنشاء | *<code>-></code> | ||
* <code>..</code> لإنشاء | **للفصل بين المعاملات (parameters) و<nowiki/>[[Kotlin/lambdas|بُنية تعبير lambda]] | ||
* <code>:</code> للفصل ما بين الاسم والنوع في التصريحات | **للفصل بين المعاملات (parameters) وتصريح النوع المُعاد في [[Kotlin/lambdas|نوع الدالة (function type)]] | ||
* <code>?</code> لجعل النوع nullable | **للفصل بين الشرط والبُنية (block) في الفرع (branch) من [[Kotlin/control flow|تعبير <code>when</code>]] | ||
* <code>-></code> | *<code>@</code> | ||
** للفصل بين | **إنشاء [[Kotlin/annotations|توصيفٍ (annotation)]] | ||
** للفصل بين | **إنشاء مرجعيّةٍ [[Kotlin/returns|لتسمية الحلقة ( loop label)]] | ||
** للفصل | **إنشاء مرجعيّةٍ [[Kotlin/returns|لتسمية تعبير lambda]] | ||
* <code>@</code> | **إنشاء مرجعيّةٍ [[Kotlin/this expressions|لتعبير <code>this</code> من مجالٍ خارجيّ (outer scope)]] | ||
** إنشاء | **إنشاء مرجعيّةٍ [[Kotlin/classes|للصنف الأعلى الخارجيّ (outer superclass)]] | ||
** | *<code>;</code> للفصل بين التعليمات المتعدِّدة الواقعة في نفس السطر | ||
** | *<code>$</code> مرجعيّة لمتغيِّر (variable) أو تعبيرٍ (expression) في [[Kotlin/basic types|قالب السلسلة النصية (string template)]] | ||
** | *<code>_</code> | ||
**بديلٌ عن المعامل غير المُستخدَم في [[Kotlin/lambdas|تعبير lambda]] | |||
**بديلٌ عن المعامل غير المُستخدَم في [[Kotlin/multi declarations|التصريح بالتفكيك (destructuring declaration)]] | |||
* <code>$</code> | ==مصادر== | ||
* <code>_</code> | *[https://kotlinlang.org/docs/reference/keyword-reference.html صفحة الكلمات المفتاحية والمعاملات في التوثيق الرسمي للغة Kotlin]<noinclude>{{DISPLAYTITLE:الكلمات المفتاحية (Keywords) والمعاملات (Operators) في لغة Kotlin}}</noinclude> | ||
** | |||
** | |||
== مصادر == | |||
* [https://kotlinlang.org/docs/reference/keyword-reference.html صفحة الكلمات المفتاحية والمعاملات في التوثيق الرسمي للغة Kotlin] | |||
[[تصنيف:Kotlin]] | [[تصنيف:Kotlin]] | ||
[[تصنيف:Kotlin Modifiers]] | [[تصنيف:Kotlin Modifiers]] | ||
[[تصنيف:Kotlin Operators]] | [[تصنيف:Kotlin Operators]] | ||
[[تصنيف:Kotlin Keywords]] | [[تصنيف:Kotlin Keywords]] |
المراجعة الحالية بتاريخ 18:09، 4 يوليو 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)
قد تُستخدَم الكلمات الآتية ككلماتٍ مفتاحيّةٍ في سياقٍ (context) ما أو كمُعرِّفاتٍ (identifiers) في سياقٍ آخر:
by
catch
للبدء بالقسم الذي يُعالِج (handle) نوع استثناءٍ (exception) مُحدَّدconstructor
للتصريح عن بانٍ أساسيّ (primary) أو ثانويّ (secondary)delegate
تُستخدَم كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)dynamic
تُستخدَم كمرجعيةٍ (reference) لنوعٍ ديناميكيٍّ في شيفرة Kotlin/JSfield
تُستخدَم كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)file
تُستخدَم كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)finally
للبدء بالقسم الذي سيُنفَّذُ عند الخروج من الجزءtry
get
- لتعريف الوصول عبر getter للخاصّيّة
- تُستخدَم كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)
import
لاستيراد التصريح من حزمةٍ أخرى للملفّ (file) الحاليinit
للبدء بجزء التهيئة (initializer block)param
تُستخدَم كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)property
تُستخدَم كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)receiver
تُستخدَم كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)set
- لتعريف الوصول عبر setter للخاصّيّة
- تُستخدَم كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)
setparam
تُستخدَم كتوصيفٍ (annotation) لهدف موقع الاستخدام (use-site target)where
لتحديد القيود (constraints) لمعامل النوع المُعمَّم
المُحدِّدات (Modifier Keywords)
قد تُستخدَم الكلمات الآتية كمُحدِّداتٍ (modifiers) في التصريحات، أو كمُعرِّفاتٍ (identifiers) في أيّ سياقٍ آخر:
actual
للإشارة إلى تعريف الاستخدام (implementation) الخاصّ بالمنصّة (platform) في المشاريع متعدِّدة المنصّات (multiplatforms)abstract
لجعل الصنف (class) (أو عنصرٍ منه) مُجرَّدًاannotation
للتصريح عن صنف (class) التوصيفcompanion
للتصريح عن الكائن المرافقconst
لجعل الخاصّيّة (property) كثابتٍ أثناء التنفيذ (compile-time constant)crossinline
لمنع الرجوع غير المحليّ (non-local return) في تعبير lambda المُمرَّر إلى الدالة المباشرة (inline function)data
لإعلام المُترجِم (compiler) بتوليد عناصر قانونيةٍ للصنف (class)enum
للتصريح عن الثوابت المُتعدِّدة (enumeration)expect
لجعل التصريح خاصًا بالمنصّة (platform-specific) إذ يُتوقَّع تعريف استخدامه (implementation) في وحدة المنصّةexternal
لجعل التصريح قابلًا لتعريف الاستخدام (implementation) خارج Kotlin (عبر JNI أو في JavaScript)final
لمنع إعادة تعريف (overriding) عنصر الصنف (class member)infix
للسماح باستدعاء الدالة (function) بالتدوين الداخليّ (infix notation)inline
لإعلام المُترجِم بتضمين الدالة (function) وتعبير lambda المُمرَّر لها مباشرةً (inline) في موقع الاستدعاء (call site)inner
للسماح بالإشارة لكائن الصنف الخارجيّ (outer class instance) من الصنف المتداخِل (nested)internal
لجعل التصريح مرئيًّا في الوحدة (module) الحاليّةlateinit
تسمح بتهيئة (initializing) الخاصّيّة غير الفارغة (non-null property) خارج الباني (constructor)noinline
تمنع التضمين المباشر (inlining) لتعبير lambda المُمرَّر إلى الدالة (function) المباشرةopen
للسماح بإنشاء أصناف فرعيّة (subclasses) من الصنف أو إعادة تعريف (override) عنصرٍ منهoperator
لتحديد الدالة كتحميلٍ زائدٍ (overloading) للمعامِل أو تعريف استخدام اصطلاحيّout
لجعل معامل النوع covariantoverride
لجعل العنصر كإعادة تعريفٍ (overriding) لعنصرٍ من الصنف الأعلى (superclass)private
لجعل التصريح مرئيًا في الصنف (class) الحاليّ أو الملف (file) فقطprotected
لجعل التصريح مرئيًا في الصنف (class) الحاليّ أو أصنافه الفرعيّة (subclasses)public
لجعل التصريح مرئيًا في كلِّ مكانreified
لجعل معامل النوع للدالة المباشرة (inline function) متاحًا للوصول أثناء التنفيذ (runtime)sealed
للتصريح عن صنفٍ مغلقٍ ( sealed class) (محدود الأصناف الفرعيّة [subclasses])suspend
تحديد الدالة (function) أو تعبير lambda كنوع تأخيرٍ (قابلٍ للاستخدام كروتيناتٍ مساعدة [coroutines])tailrec
لجعل الدالة تعاوديّةً (tail-recursive) (تسمح للمترجِم [compiler] باستخدام التكرار [iteration] بدلًا من التعاودية [recursion])vararg
للسماح بتمرير عددٍ متغيّرٍ من الوسائط (arguments) للمعامل (parameter)
المُعرِّفات الخاصّة (Special Identifiers)
وهي مُعرَّفةٌ لدى المُترجِم (compiler) بسياقٍ معيّنٍ ويمكن استخدامها كمعرِّفات (identifiers) في سياقٍ آخر:
field
تُستخدَم داخل عمليات الوصول (accessors) إلى الخاصّيّة (property) للإشارة إلى الحقل المساعد (backing field) للخاصّيّةit
تُستخدَم داخل تعبير lambda للإشارة إلى معاملها الوحيد ضمنيًا (implicitly)
المُعامِلات والرموز الخاصّة (Operators and Special Symbols)
+
و-
و*
و/
و%
لتنفيذ العمليات الحسابيّة*
يُستخدَم أيضًا لتمرير مصفوفةٍ (array) إلى معاملٍ (parameter) متغيّرِ العدد
=
- معامل الإسناد (assignment)
- لتحديد القيم الافتراضيّة للمعاملات (parameters)
-
+=
و -=
و *=
و /=
و %=
معامِلات الإسناد المُحسَّنة (augmented assignment) ++
و--
معاملات الزيادة (increment) والنقصان (decrement)&&
و||
و!
معاملات العمليّات المنطقيّة and و or و not (وللقيام بالعمليات على مستوى الخانة الثنائيّة [bitwise] تُستخدَم الدالة الموافقة بالصيغة الداخليّة [infix function])==
و!=
معاملات التساوي (تُترجَم لاستدعاءاتٍ للدالةequals()
وذلك للأنواع غير الأساسيّة [non-primitive])===
و!==
معاملات التساوي بالمرجعيّة (referential equality)-
<
و>
و <=
و>=
معاملات المقارنة (تُترجَم لاستدعاءاتٍ للدالةcompareTo()
وذلك للأنواع غير الأساسيّة [non-primitive]) [
و]
معامل الوصول المُفهرَس (indexed) (تُترجَم لاستدعاءاتٍ للدالتينget
وset
)!!
للتأكيد على أنّ التعبير ليس بقيمةnull
?.
للاستدعاء الآمن (safe call) (استدعاء تابعٍ [method] أو الوصول إلى الخاصّيّة [property] عندما لا يكون المُستقبِل [receiver] بالقيمةnull
)?:
الحصول على القيمة بالطرف الأيمن إن كانت القيمة بالطرف الأيسرnull
(معامل elvis)::
لإنشاء مرجعيّة عنصرٍ (member reference) أو مرجعيّة صنفٍ (class reference)..
لإنشاء المجال (range):
للفصل ما بين الاسم والنوع (type) في التصريحات?
لجعل النوع nullable (يقبل القيمة الفارغة null)->
- للفصل بين المعاملات (parameters) وبُنية تعبير lambda
- للفصل بين المعاملات (parameters) وتصريح النوع المُعاد في نوع الدالة (function type)
- للفصل بين الشرط والبُنية (block) في الفرع (branch) من تعبير
when
@
- إنشاء توصيفٍ (annotation)
- إنشاء مرجعيّةٍ لتسمية الحلقة ( loop label)
- إنشاء مرجعيّةٍ لتسمية تعبير lambda
- إنشاء مرجعيّةٍ لتعبير
this
من مجالٍ خارجيّ (outer scope) - إنشاء مرجعيّةٍ للصنف الأعلى الخارجيّ (outer superclass)
;
للفصل بين التعليمات المتعدِّدة الواقعة في نفس السطر$
مرجعيّة لمتغيِّر (variable) أو تعبيرٍ (expression) في قالب السلسلة النصية (string template)_
- بديلٌ عن المعامل غير المُستخدَم في تعبير lambda
- بديلٌ عن المعامل غير المُستخدَم في التصريح بالتفكيك (destructuring declaration)