نتائج البحث

اذهب إلى التنقل اذهب إلى البحث

الخاصية ‎‎javaClass‎ في Kotlin

تعيد الخاصيّة javaClass صنف Java الخاص بالكائن (object) الذي تُستدعى عبره أثناء التشغيل (runtime)، وتُعرَّف هذه الخاصية في جميع الأصناف الفرعيّة (sub-classes) من الصنف Any. البنية العامة inline val <T : Any> T.javaClass: Class<T> يُلاحَظ وجود الكلمة المفتاحية inline للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع توثيق الدوال المباشرة (inline functions). القيم المعادة صنف Java الخاصّ بالكائن الذي تُستدعى عبره أثناء التشغيل (runtime). أمثلة تنشِئ الشيفرة الآتية سلسلةً نصيةً باسم a، وتحصل على صنف Java الخاص بها عبر استدعاء ...

التوصيفات (Annotations) في لغة Kotlin

التصريح عن التوصيف (Annotation Declaration) تُعدُّ التوصيفات إحدى الوسائل لإضافة بياناتٍ توصيفيّةٍ (metadata) إلى الشيفرة، وللتصريح عن التوصيف يُضاف المُحدِّد annotation قبل اسم الصنف، مثل: annotation class Fancy وقد تُحدَّد بعض خواصّ التوصيفات (annotation attributes) باستخدام التوصيفات الآتية (meta-annotations) لتوصيفات الصنف: ‎@Target لتحديد نوع العناصر التي يمكن توصيفها مثل الأصناف (classes) والدوال (functions) والخاصّيّات (properties) والتعابير (expressions) و... إلخ. ‎@Retention لتحديد فيما إن كان التوصيف مُخزَّنًا في ملفات الأصناف المُترجَمة، أو مرئيًا عبر انعكاسٍ (reflection) أثناء التنفيذ (runtime) (وكلاهما محقُّق بالحالة ...

أصناف المكتبة غير الكافية (Incomplete Library Classes)

توصيف المشكلة لا تلبِّي أصناف المكتبة (library classes) كافّة احتياجات البرنامج مع استمرار تطوُّره، ولا يمكن تعديلها لأنّها مُخصَّصةٌ للقراءة فقط (read-only). أسبابها عدم تزويد مُطوِّر المكتبة كافَّةَ الميّزات (features) التي تحتاجها في البرنامج أو امتناعه عن تعريفَ استخدامها (implement). وما الحل؟ لتعريف بعض التوابع (methods) في المكتبة عليك بتعريف التوابع الدخيلة (introduce foreign methods). أمّا لإجراء تغييراتٍ واسعةٍ في صنف المكتبة فعليك بتعريف الإضافات المحليّة (introduce local extensions). إليك المزيد سيكون حلُّ المشكلة كفيلًا بالتقليل من تكرار الشيفرات (duplications)، ...

الصنف ‎‎Enum‎ في Kotlin

يعدُّ الصنف Enum الصنف الأساس لكل الأصناف القابلة للعد (enum classes). إن أردت الاطلاع على معلومات أوسع حول هذه الأصناف، فاقرأ هذا المرجع. abstract class Enum<E : Enum<E>> : Comparable<E> (source) الدوال البانية (Constructors) <init> يعدُّ الصنف Enum الصنف الأساس لكل أصناف الترقيم (enum classes). الخاصيات name تمثل اسم الثابت المعرف في الكائن enum الذي استُدعي معها كما سُمّي أُثناء تعريف هذا الكائن. ordinal تمثل ترتيب (ordinal) الثابت المعرف في الكائن enum الذي استُدعي معها. الدوال clone ترمي هذه الدالة استثناءً لأنّ ثوابت الصنف Enum لا يمكن أن ...

الصنف ‎‎Enum‎ في Kotlin

يعدُّ الصنف Enum الصنف الأساس لكل الأصناف القابلة للعد (enum classes). إن أردت الاطلاع على معلومات أوسع حول هذه الأصناف، فاقرأ هذا المرجع. abstract class Enum<E : Enum<E>> : Comparable<E> (source) الدوال البانية (Constructors) <init> يعدُّ الصنف Enum الصنف الأساس لكل أصناف الترقيم (enum classes). الخاصيات name تمثل اسم الثابت المعرف في الكائن enum الذي استُدعي معها كما سُمّي أُثناء تعريف هذا الكائن. ordinal تمثل ترتيب (ordinal) الثابت المعرف في الكائن enum الذي استُدعي معها. الدوال clone ترمي هذه الدالة استثناءً لأنّ ثوابت الصنف Enum لا يمكن أن ...

المُنشِئ الحافظ للنوع (Type-Safe Builder) في لغة Kotlin

المُنشِئ الحافظ للنوع (Type-Safe Builder) يُتاح بناءُ المُنشِئ الستاتيكيّ الحافظ للنوع في لغة Kotlin باستخدام الدوال ذات التسمية المعبِّرة كمُنشِئ (builder) بالإضافة إلى قيم حرفية (literals) للدوال مع المستقبِل (receiver)، إذ يسمح المُنشِئ الحافظ للنوع ببناء لغات مُخصَّصة المجال (DSL) بالاعتماد على Kotlin بما يتناسب مع إنشاء بُنى البيانات الهرميّة المعقَّدة بطريقةٍ نصف تصريحية (semi-declarative)، وهذه بعض الأمثلة من حالات استخدامه: توليد ترميزٍ (markup) باستخدام شيفرة Kotlin مثل HTML أو XML تصميم أجزاء واجهات المستخدم (UI) برمجيًا مثل Anko ضبط ...

الإضافات (Extensions) في لغة Kotlin

الإضافات (Extensions) توفِّر لغة Kotlin -كما هو الحال في لغات البرمجة مثل C#‎ و Gosu- إمكانيّة الإضافة على الأصناف (classes) بوظائف جديدةٍ دون اللجوء إلى الوراثة (inheritance) منها أو استخدام أيّ أنماطٍ تصميميّةٍ مثل Secorator، وذلك من خلال تصريحات خاصّة تُدعى الإضافات (extensions)، إذ تدعم لغة Kotlin الدوال الإضافيّة (extension functions) والخاصّيّات الإضافيّة (extension properties). الدوال الإضافيّة (Extension Functions) لتعريف دالةٍ إضافيّةٍ يجب أن يُسبَق اسمها بنوع المستقبِل (receiver type) أي النوع الذي ستتمّ الإضافة عليه، ففي الشيفرة الآتية تُضاف ...

المقارنة بين لغتيّ البرمجة Java و Kotlin

بعض المواضيع في Java ومعالجتها في Kotlin عالجت لغة Kotlin العديد من المشاكل الموجودة في Java وهي: التحكُّم بالمرجعيّات الفارغة (null references) عبر نظام الأنواع لا وجود للأنواع الخامّ (raw types) تُعدُّ المصفوفات في Kotlin ثابتة (invariant) للدوال (functions) في Kotlin أنواع مناسبة وهذا ما يتعارض مع التحويلات SAM في Java التنوّع في موقع الاستخدام (use-site variance) دون الحاجة إلى المحارف البديلة (wildcards) لا وجود للاستثناءات المُتحقَّق منها (checked exceptions) في Kotlin ما تمتاز به Java ولا تدعمه Kotlin الاستثناءات ...

الدالة filterIsInstance()‎ في Kotlin

تعيد الدالة filterIsInstance()‎ قائمة تحوي عناصر المصفوفة أو المجموعة المعطاة التي هي نسخةٌ (instance) من نوع أو صنفٍ معيّن. البنية العامة inline fun <reified R> Array<*>.filterIsInstance(): List<R> inline fun <reified R> Iterable<*>.filterIsInstance(): List<R> يمكن تمرير المعامل klass إلى الدالة filterIsInstance()‎: fun <R> Array<*>.filterIsInstance(klass: Class<R>): List<R> fun <R> Iterable<*>.filterIsInstance(klass: Class<R>): List<R> بيئة التشغيل المطلوبة: JVM وجود الكلمة المفتاحية inline يدل على أنَّ هذه الدالة مباشرة (لمزيد من التفاصيل، راجع توثيق الدوال المباشرة)، واستخدام الكلمة المفتاحية reified يسمح بالوصول إلى نوعٍ مُمرَّر كمتحولٍ وسيطٍ (parameter، راجع توثيق reified ...

الانعكاس (Reflection) في لغة Kotlin

الانعكاس هو مجموعةٌ من مميّزات اللغة والمكتبات التي تسمح بمراقبة بُنية البرنامج أثناء التنفيذ، إذ تولي لغة Kotlin أهميةً كبرى لكلٍّ من الدوال (functions) والخاصّيّات (properties) وتستمر بتتبُّعها (مثل معرفة اسم أو نوع الخاصّيّة والدالة أثناء التنفيذ) وهذا يرتبط ارتباطًا وثيقًا مع استخدام النمط الوظائفيّ (functional) أو التفاعليّ (reactive). ملاحظة: إن الجزء التنفيذيّ (runtime component) المطلوب في منصّة العمل Java لاستخدام ميزات الانعكاس يُوزَّع كملف ‎.jar مستقلٍّ (kotlin-reflect.jar) وذلك بهدف تخفيض حجم التخزين المطلوب لمكتبة التنفيذ (runtime library) للتطبيقات غير ...

الحزم (Packages) في Kotlin

التصريح عن الحزم يبدأ الملف المصدريّ (source file) عادةً بالتصريح (declaration) عن الحزم مثل: package foo.bar fun baz() {} class Goo {} // ... ويتوضع حينها كلُّ ما يحتويه هذا الملف (كالأصناف [classes] والدوال [functions] مثلًا) في الحزمة المُصرَّح عنها ببدايته، ففي الشيفرة السابقة إن الاسم الفعليّ الكامل للدالة baz()‎ هو foo.bar.baz والاسم الكامل للصنف Goo هو foo.bar.Goo. وإذا لم تُحدَّد الحزمة في بداية الملف فإن محتوياته تتبع للحزمة الافتراضيّة "default" التي لا اسم لها. استيراد الحزم الافتراضيّة (Default Imports) يُستورَد عددٌ من الحزم ...

الدالة Enum.equals()‎ في Kotlin

تتحقق الدالة equals()‎ إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعي معها. استدعاء هذه الدالة يجب أن يكون: انعكاسيًا (Reflexive): لكل مرجع x لا يساوي null، يجب أن يعيد استدعاء x.equals(x)‎ القيمة true. تماثليًَا (Symmetric): لكل قيمتين مرجعيتين x و y لا تساويان null، سيعيد الاستدعاء x.equals(y)‎ القيمة true إذا، وفقط، إذا أعادت y.equals(x)‎ القيمة true. تواتريًا (Transitive):  لكل القيم المرجعية x و y و z التي لا تساوي null، سيعيد استدعاء x.equals(z)‎ القيمة true إن أعادت x.equals(y)‎ و ...

التسمية البديلة للأنواع (Type aliases) في لغة Kotlin

تدعم لغة Kotlin ميّزة التسمية البديلة للأنواع الموجودة للبيانات، وخاصّة إن كان اسم النوع طويلًا فيُستعاض عنه باسمٍ أقصرٍ ويُستخدَم الاسم الجديد في كتابة الشيفرات؛ فمن المفيد مثلًا تسمية الأنواع المُعمّمة (generics) بأسماء أقصرٍ، مثل الشيفرة الآتية المُستخدَمة لتسمية أنواع المجموعات (collections): typealias NodeSet = Set<Network.Node> typealias FileTable<K> = MutableMap<K, MutableList<File>> وبالإمكان أيضًا تسمية الأنواع المختلفة للدوال، مثل: typealias MyHandler = (Int, String, Any) -> Unit typealias Predicate<T> = (T) -> Boolean وكذلك الأمر بالنسبة للأصناف الداخليّة (inner classes) والمتداخلة (nested classes)، مثل: class ...

الدالة filterIsInstanceTo()‎ في Kotlin

تضيف الدالة filterIsInstanceTo()‎ عناصر المصفوفة أو المجموعة المعطاة التي هي نسخةٌ (instance) من نوع أو صنفٍ معيّن إلى المجموعة المتغيرة destination المُمرّرة إليها. البنية العامة inline fun <reified R, C : MutableCollection<in R>> Array<*>.filterIsInstanceTo( destination: C ): C inline fun <reified R, C : MutableCollection<in R>> Iterable<*>.filterIsInstanceTo( destination: C ): C يمكن تمرير معامل klass إلى الدالة filterIsInstanceTo()‎: fun <C : MutableCollection<in R>, R> Array<*>.filterIsInstanceTo( destination: C, klass: Class<R> ): C fun ...

الصنف ‎‎MatchGroup‎ في Kotlin

يمثل الصنف MatchGroup النتائج التي نحصل عليها من مجموعة واحدة ضمن MatchResult الخاصة بالصنف Regex. data actual class MatchGroup الدوال البانية <init> تنشئ كائنًا من النوع MatchGroup الذي يمثل النتائج التي نحصل عليها من مجموعة واحدة ضمن MatchResult الخاصة بالصنف Regex.   الخاصيات range تمثل مجال الفهارس التي تحدّد مكان مجموعة النتائج التي تم الحصول عليها. value تمثل قيمة مجموعة النتائج التي تم الحصول عليها. الدوال الموروثة equals يبين إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعي معه. hashCode يعيد الشيفرة ...

الصنف ‎‎MatchGroup‎ في Kotlin

يمثل الصنف MatchGroup النتائج التي نحصل عليها من مجموعة واحدة ضمن MatchResult الخاصة بالصنف Regex. data actual class MatchGroup الدوال البانية <init> تنشئ كائنًا من النوع MatchGroup الذي يمثل النتائج التي نحصل عليها من مجموعة واحدة ضمن MatchResult الخاصة بالصنف Regex.   الخاصيات range تمثل مجال الفهارس التي تحدّد مكان مجموعة النتائج التي تم الحصول عليها. value تمثل قيمة مجموعة النتائج التي تم الحصول عليها. الدوال الموروثة equals يبين إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعي معه. hashCode يعيد الشيفرة ...

الخاصية Enum.name في Kotlin

تمثِّل الخاصية Enum.name اسم الثابت المعرف في الكائن enum الذي استُدعي معها كما سُمّي أُثناء تعريف هذا الكائن. البنية العامة val name: String أمثلة يوضح المثال التالي كيفية إنشاء نسخة من الصنف Enum باسم ColorEnum مكونًا من أربعة ثوابت هي: Red  و Blue  و Green  و Orange، واستعمال الخاصية Enum.name مع الثابتين RED و BLUE: fun main(args: Array<String>) { print(ColorEnum.Red.name) // Red print(ColorEnum.Blue.name) // Blue } enum class ColorEnum(val colorCode: Int) { Red(2), Blue(11212), ...

الصنف ‎‎StringBuilder‎ في Kotlin

actual typealias StringBuilder = StringBuilder منصة التشغيل والإصدار المطلوبان: JVM ،Kotlin 1.1 actual class StringBuilder : Appendable, CharSequence منصة التشغيل المطلوبة: JS. الدوال البانية (Constructors) <init> تنشئ الدالة StringBuilder()‎ كائنًا من النوع StringBuilder. الخاصيات length تمثل هذه الخاصية حجم الكائن StringBuilder (عدد محارفه) الذي استدعي معها. الدوال append تضيف هذه الدالة محرفًا أو سلسلة نصية أو أيَّ كائن آخر إلى الكائن StringBuilder. get تجلب هذه الدالة محرفًا ذا فهرس محدَّدٍ من سلسلة محارف الكائن StringBuilder. reverse تعكس هذه الدالة ترتيب محارف الكائن StringBuilder. subSequence تقتطع هذه الدالة جزءًا محددًا من سلسلة محارف الكائن StringBuilder وتعيدها. toString تحول هذه ...

الصنف ‎‎StringBuilder‎ في Kotlin

actual typealias StringBuilder = StringBuilder منصة التشغيل والإصدار المطلوبان: JVM ،Kotlin 1.1 actual class StringBuilder : Appendable, CharSequence منصة التشغيل المطلوبة: JS. الدوال البانية (Constructors) <init> تنشئ الدالة StringBuilder()‎ كائنًا من النوع StringBuilder. الخاصيات length تمثل هذه الخاصية حجم الكائن StringBuilder (عدد محارفه) الذي استدعي معها. الدوال append تضيف هذه الدالة محرفًا أو سلسلة نصية أو أيَّ كائن آخر إلى الكائن StringBuilder. get تجلب هذه الدالة محرفًا ذا فهرس محدَّدٍ من سلسلة محارف الكائن StringBuilder. reverse تعكس هذه الدالة ترتيب محارف الكائن StringBuilder. subSequence تقتطع هذه الدالة جزءًا محددًا من سلسلة محارف الكائن StringBuilder وتعيدها. toString تحول هذه ...

الخاصية Enum.ordinal في Kotlin

تمثل الخاصية Enum.ordinal ترتيب (ordinal) الثابت المعرف في الكائن enum الذي استُدعي معها؛ أي موقعه في تصريح الكائن enum، إذ يكون موقع الثابت الأول هو 0 وهكذا. البنية العامة val ordinal: Int أمثلة توضح الشيفرة التالية كيفية إنشاء صنف من النوع Enum باسم ColorEnum مكونًا من أربعة ثوابت هي: Red و Blue و Green و Orange، واستعمال الخاصية ordinal مع المركّبتين Red و Blue لمعرفة ترتيبهما: fun main(args: Array<String>) { print(ColorEnum.Red.ordinal) // 0 print(ColorEnum.Blue.ordinal) // 1 } enum class ColorEnum(val colorCode: Int) { ...

عرض (20 السابقة | 20 التالية) (20 | 50 | 100 | 250 | 500).