نتائج البحث

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

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

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

التهيئة الأولية للصنف ‎‎Array‎ في Kotlin

تنشِئ الدالة Array()‎ البانية مصفوفةً بحجم size مُحدَّدٍ، حيث يُحسَب كلُّ عنصرٍ فيها عبر استدعاء الدالة init المُحدَّدة، والتي تُعيد عنصرًا في المصفوفة بحسب الفهرس (index) المُعطى. البنية العامة Array(size: Int, init: (Int) -> T) المعاملات size عدد صحيح يمثل حجم المصفوفة المراد إنشاؤها. init دالةٌ تستدعى لحساب قيمة كل عنصر من عناصر المصفوفة المراد إنشاؤها. القيم المعادة مصفوفة بالحجم size تتكوّن من العناصر الناتجة عن الدالة init. أمثلة ينشِئ التابع في الشيفرة الآتية مصفوفةً بستة عناصر زوجيّة (نتيجة ضرب ...

التهيئة الأولية للصنف ‎‎Array‎ في Kotlin

تنشِئ الدالة Array()‎ البانية مصفوفةً بحجم size مُحدَّدٍ، حيث يُحسَب كلُّ عنصرٍ فيها عبر استدعاء الدالة init المُحدَّدة، والتي تُعيد عنصرًا في المصفوفة بحسب الفهرس (index) المُعطى. البنية العامة Array(size: Int, init: (Int) -> T) المعاملات size عدد صحيح يمثل حجم المصفوفة المراد إنشاؤها. init دالةٌ تستدعى لحساب قيمة كل عنصر من عناصر المصفوفة المراد إنشاؤها. القيم المعادة مصفوفة بالحجم size تتكوّن من العناصر الناتجة عن الدالة init. أمثلة ينشِئ التابع في الشيفرة الآتية مصفوفةً بستة عناصر زوجيّة (نتيجة ضرب ...

التهيئة الأولية للصنف BooleanArray في Kotlin

تنشئ الدالة BooleanArray()‎ البانية مصفوفة جديدة بحجم معين تحوي قيمًا منطقية محدَّدة أو القيمة false المنطقية. البنية العامة BooleanArray(size: Int, init: (Int) -> Boolean) BooleanArray(size: Int) تنشئ هذه الدالة مصفوفة جديدة حجمها بحجم الوسيط size، وتحسب قيمة كل عنصر منها عبر استدعاء الدالة init مع قيمة الفهرس الحالي لكل عنصر. إن لم يُعطَ الوسيط init، فستضبط كل قيم المصفوفة إلى القيمة false. المعاملات size عدد صحيح يمثل حجم المصفوفة الجديدة المراد إنشاؤها. init دالةٌ تستدعى لحساب قيمة كل عنصر من عناصر المصفوفة ...

التهيئة الأولية للصنف CharArray في Kotlin

تنشئ الدالة CharArray()‎ البانية مصفوفة جديدة من النوع CharArray (أي مصفوفة من الحروف) بحجم معين، وتحوي قيمًا محدَّدة أو القيمة '‎\u0000' التي تمثل حرفًا عدميًّا. البنية العامة CharArray(size: Int, init: (Int) -> Char) CharArray(size: Int) تنشئ هذه الدالة مصفوفة جديدة حجمها بحجم الوسيط size، وتحسب قيمة كل عنصر منها عبر استدعاء الدالة init مع قيمة الفهرس الحالي لكل عنصر. إن لم يُعطَ الوسيط init، فستُضبَط كل قيم المصفوفة إلى القيمة '‎\u0000'. المعاملات size عدد صحيح يمثل حجم المصفوفة الجديدة المراد إنشاؤها. init دالةٌ تستدعى لحساب قيمة كل عنصر من عناصر المصفوفة المراد إنشاؤها ...

التهيئة الأولية للصنف BooleanArray في Kotlin

تنشئ الدالة BooleanArray()‎ البانية مصفوفة جديدة بحجم معين تحوي قيمًا منطقية محدَّدة أو القيمة false المنطقية. البنية العامة BooleanArray(size: Int, init: (Int) -> Boolean) BooleanArray(size: Int) تنشئ هذه الدالة مصفوفة جديدة حجمها بحجم الوسيط size، وتحسب قيمة كل عنصر منها عبر استدعاء الدالة init مع قيمة الفهرس الحالي لكل عنصر. إن لم يُعطَ الوسيط init، فستضبط كل قيم المصفوفة إلى القيمة false. المعاملات size عدد صحيح يمثل حجم المصفوفة الجديدة المراد إنشاؤها. init دالةٌ تستدعى لحساب قيمة كل عنصر من عناصر المصفوفة ...

التهيئة الأولية للصنف CharArray في Kotlin

تنشئ الدالة CharArray()‎ البانية مصفوفة جديدة من النوع CharArray (أي مصفوفة من الحروف) بحجم معين، وتحوي قيمًا محدَّدة أو القيمة '‎\u0000' التي تمثل حرفًا عدميًّا. البنية العامة CharArray(size: Int, init: (Int) -> Char) CharArray(size: Int) تنشئ هذه الدالة مصفوفة جديدة حجمها بحجم الوسيط size، وتحسب قيمة كل عنصر منها عبر استدعاء الدالة init مع قيمة الفهرس الحالي لكل عنصر. إن لم يُعطَ الوسيط init، فستُضبَط كل قيم المصفوفة إلى القيمة '‎\u0000'. المعاملات size عدد صحيح يمثل حجم المصفوفة الجديدة المراد إنشاؤها. init دالةٌ تستدعى لحساب قيمة كل عنصر من عناصر المصفوفة المراد إنشاؤها ...

التهيئة الأولية للصنف ByteArray في Kotlin

تنشئ الدالة ByteArray()‎ البانية مصفوفة جديدة من النوع ByteArray (أي حجم كل عنصر منها بايتًا واحدًا) بحجم معين، إذ تحوي قيمًا محدَّدة أو القيم 0. البنية العامة ByteArray(size: Int, init: (Int) -> Byte) ByteArray(size: Int) تنشئ هذه الدالة مصفوفة جديدة حجمها بحجم الوسيط size، وتحسب قيمة كل عنصر منها عبر استدعاء الدالة init مع قيمة الفهرس الحالي لكل عنصر. إن لم يُعطَ الوسيط init، فستضبط كل قيم المصفوفة إلى القيمة 0. المعاملات size عدد صحيح يمثل حجم المصفوفة الجديدة المراد إنشاؤها. init دالةٌ تستدعى لحساب قيمة كل عنصر من عناصر المصفوفة المراد ...

التهيئة الأولية للصنف ByteArray في Kotlin

تنشئ الدالة ByteArray()‎ البانية مصفوفة جديدة من النوع ByteArray (أي حجم كل عنصر منها بايتًا واحدًا) بحجم معين، إذ تحوي قيمًا محدَّدة أو القيم 0. البنية العامة ByteArray(size: Int, init: (Int) -> Byte) ByteArray(size: Int) تنشئ هذه الدالة مصفوفة جديدة حجمها بحجم الوسيط size، وتحسب قيمة كل عنصر منها عبر استدعاء الدالة init مع قيمة الفهرس الحالي لكل عنصر. إن لم يُعطَ الوسيط init، فستضبط كل قيم المصفوفة إلى القيمة 0. المعاملات size عدد صحيح يمثل حجم المصفوفة الجديدة المراد إنشاؤها. init دالةٌ تستدعى لحساب قيمة كل عنصر من عناصر المصفوفة المراد ...

التهيئة الأولية للصنف DoubleArray في Kotlin

تنشئ الدالة DoubleArray()‎ البانية مصفوفة جديدة من النوع DoubleArray (أي مصفوفة من الأعداد العشرية المضاعفة [double]) بحجم معين، وتحوي قيمًا محدَّدة أو القيم 0. البنية العامة DoubleArray(size: Int, init: (Int) -> Double) DoubleArray(size: Int) تنشئ هذه الدالة مصفوفة جديدة حجمها بحجم الوسيط size، وتحسب قيمة كل عنصر من عناصرها عبر استدعاء الدالة init مع قيمة الفهرس الحالي لكل عنصر. إن لم يُعطَ الوسيط init، فستُضبَط كل قيم المصفوفة إلى القيمة 0. المعاملات size عدد صحيح يمثل حجم المصفوفة الجديدة المراد إنشاؤها. init دالةٌ تستدعى لحساب قيمة كل عنصر من عناصر المصفوفة المراد إنشاؤها بناءً ...

التهيئة الأولية للصنف DoubleArray في Kotlin

تنشئ الدالة DoubleArray()‎ البانية مصفوفة جديدة من النوع DoubleArray (أي مصفوفة من الأعداد العشرية المضاعفة [double]) بحجم معين، وتحوي قيمًا محدَّدة أو القيم 0. البنية العامة DoubleArray(size: Int, init: (Int) -> Double) DoubleArray(size: Int) تنشئ هذه الدالة مصفوفة جديدة حجمها بحجم الوسيط size، وتحسب قيمة كل عنصر من عناصرها عبر استدعاء الدالة init مع قيمة الفهرس الحالي لكل عنصر. إن لم يُعطَ الوسيط init، فستُضبَط كل قيم المصفوفة إلى القيمة 0. المعاملات size عدد صحيح يمثل حجم المصفوفة الجديدة المراد إنشاؤها. init دالةٌ تستدعى لحساب قيمة كل عنصر من عناصر المصفوفة المراد إنشاؤها بناءً ...

التهيئة الأولية للصنف FloatArray في Kotlin

تنشئ الدالة FloatArray()‎ البانية مصفوفة جديدة من النوع FloatArray (أي مصفوفة من الأعداد العشرية) بحجم معين، وتحوي قيمًا محدَّدة أو القيم 0. البنية العامة FloatArray(size: Int, init: (Int) -> Float) FloatArray(size: Int) تنشئ هذه الدالة مصفوفة جديدة حجمها بحجم الوسيط size، وتحسب قيمة كل عنصر من عناصرها عبر استدعاء الدالة init مع قيمة الفهرس الحالي لكل عنصر. إن لم يُعطَ الوسيط init، فستضبط كل قيم المصفوفة إلى القيمة 0. المعاملات size عدد صحيح يمثل حجم المصفوفة الجديدة المراد إنشاؤها. init دالةٌ تستدعى لحساب قيمة كل عنصر من عناصر المصفوفة المراد إنشاؤها بناءً على قيمة ...

التهيئة الأولية للصنف FloatArray في Kotlin

تنشئ الدالة FloatArray()‎ البانية مصفوفة جديدة من النوع FloatArray (أي مصفوفة من الأعداد العشرية) بحجم معين، وتحوي قيمًا محدَّدة أو القيم 0. البنية العامة FloatArray(size: Int, init: (Int) -> Float) FloatArray(size: Int) تنشئ هذه الدالة مصفوفة جديدة حجمها بحجم الوسيط size، وتحسب قيمة كل عنصر من عناصرها عبر استدعاء الدالة init مع قيمة الفهرس الحالي لكل عنصر. إن لم يُعطَ الوسيط init، فستضبط كل قيم المصفوفة إلى القيمة 0. المعاملات size عدد صحيح يمثل حجم المصفوفة الجديدة المراد إنشاؤها. init دالةٌ تستدعى لحساب قيمة كل عنصر من عناصر المصفوفة المراد إنشاؤها بناءً على قيمة ...

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

تحلّل الدالة toBigDecimal()‎ السلسلة النصية التي استٌدعيت معها وتحوّلها إلى عدد من النوع BigDecimal. البنية العامة inline fun String.toBigDecimal(): BigDecimal منصة التشغيل والإصدار المطلوبان: Kotlin 1.2 ، JVM. تحلّل الدالة toBigDecimal()‎ السلسلة النصية التي استٌدعيت معها وتحوّلها إلى عدد من النوع java.math.BigDecimal ثم تعيد الناتج. إن لم تكن السلسلة النصية تمثل عددًا، فسيُطلَق الاستثناء NumberFormatException. inline fun String.toBigDecimal( mathContext: MathContext ): BigDecimal منصة التشغيل والإصدار المطلوبان: Kotlin 1.2 ، JVM. تحلّل الدالة toBigDecimal()‎ السلسلة النصية التي استٌدعيت معها وتحوّلها إلى ...

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

تحلّل الدالة toBigInteger()‎ السلسلة النصية التي استٌدعيت معها وتحوّلها إلى عدد من النوع BigDecimal. البنية العامة inline fun String.toBigInteger(): BigInteger بيئة التشغيل المطلوبة: Kotlin 1.2 ، JVM. تحلّل الدالة toBigInteger()‎ السلسلة النصية التي استٌدعيت معها وتحوّلها إلى عدد من النوع java.math.BigInteger وتعيد الناتج. إن لم تكن السلسلة النصية تمثل عددًا، فسيُطلَق الاستثناء NumberFormatException. inline fun String.toBigInteger(radix: Int): BigInteger بيئة التشغيل المطلوبة: Kotlin 1.2 ، JVM. تحلّل الدالة toBigInteger()‎ السلسلة النصية التي استٌدعيت عبرها وتحوّلها إلى عدد من النوع java.math.BigInteger وتعيد الناتج. إن ...

الأصناف (Classes) والوراثة (Inheritance) في لغة Kotlin

تُستخدم الكلمة المفتاحيّة class للتصريح (declaration) عن الصنف بالصيغة الآتية (اسم الصنف Invoice): class Invoice { } ويحتوي التصريح على اسم الصنف (class name) وترويسة الصنف (class header) (والتي تُحدِّد معاملات النوع والباني الأساسيّ ...إلخ.) وبُنية الصنف (class body) محاطةً بالقوسين {}، وإن كلًا من ترويسة الصنف وبُنيته اختياريتان؛ فإذا كان الصنف خاليًا لا حاجة للأقواس، مثل: class Empty الباني (Constructor) يوجد لكلّ صنف في لغة Kotlin بانٍ رئيسيّ (primary) واحدٌ وبانٍ -أو أكثر- ثانويّ (secondary)، إذ يُعدُّ الباني الرئيسيّ جزءًا من ...

التابع Array.sum‎ في روبي

يجمع التابع sum عناصر المصفوفة التي استُدعيت معه مع بعضها بعضًا. إن مُرِّرت كتلة برمجية إلى هذا التابع، فستُطبَّق تلك الكتلة على كل عنصر من عناصر المصفوفة ثم ستُجمَع النواتج المعادة لجميع العناصر. في حال كانت المصفوفة فارغة، ستُعاد القيمة المُمرّرة إلى هذا التابع. يمكن استخدام هذا التابع مع المصفوفات التي تحوي قيمًا غير عددية بتحديد قيمة مناسبة للوسيط init. يجدر التنبيه إلى أنّ التابعين join و flatten هما أسرع من التابع sum بالنسبة للمصفوفات التي تضم سلاسل نصية أو ...

التابع Enumerable.sum في روبي

يعيد التابع sum مجموع عناصر الكائن القابل للتعداد الذي استدعي معه. إن أعطيت كتلة، فستُطبَّق الكتلة على كل عنصر قبل الإضافة. قد لا يأخذ التابع sum بالحسبان إعادة تعريف المعاملات + مثل + في الصنف Integer. البنية العامة sum(init=0) → number sum(init=0) {|e| expr } → number المعاملات init القيمة البدائية المراد البدء بها في عملية الجمع. القيمة الافتراضية هي: 0. القيمة المعادة يعاد عدد يمثِّل ناتج جمع عناصر الكائن القابل للتعداد المعطى. أمثلة مثال على استعمال التابع sum: { 1 => 10, ...

الخطافات غير المتزامنة في Node.js

الاستقرار: 1-تجريبي توفِّر الوحدة async_hooks واجهة برمجية (API) لتسجيل دوال ردود النداء التي تتعقَّب دورة حياة (lifetime) الموارد غير المتزامنة (asynchronous resources) المُنشأَة داخل تطبيقات Node.js. يمكن الوصول إلى هذه الوحدة باستعمال الأمر التالي: const async_hooks = require('async_hooks'); اصطلاحات يمثِّل المورد غير المتزامن كائنًا مرفقًا به رد نداء. قد يُستدعَى رد النداء هذا عدَّة مرات، مثل الحدث 'conection' في net.createServer()‎، أو مرةً واحدة فقط، مثل fs.open()‎. يمكن أن يُغلق المورد أيضًا قبل أن يُستدعَى رد النداء. لا تفرِّق الوحدة AsyncHook ...

التهيئة الأولية للصنف ‎‎Any‎ في Kotlin

تعيد الدالة Any()‎ نسخةً من الصنف Any والذي هو الجذر الرئيسيّ في الهرميّة العامّة لأيّ صنفٍ مُستخدَمٍ أثناء البرمجة في Kotlin؛ أي أنّ كلَّ صنفٍ سيكون له الصنف الأعلى (superclass)‏ Any. البنية العامة Any() القيم المعادة يعاد كائنٌ (object) من الصنف Any. أمثلة تنشِئ الدالة Any()‎ في الشيفرة الآتية كائنًا من الصنف Anyباسم obj ، ثم يُحدِّد صنف الكائن المُنشَأ وذلك بالاعتماد على خاصيّة الاسم البسيط للصنف (وهي class.simpleName) : fun main(args: Array<String>) {    val obj = Any()    println(" ${obj::class.simpleName}")  // Any } انظر ...

التهيئة الأولية للصنف ‎‎Any‎ في Kotlin

تعيد الدالة Any()‎ نسخةً من الصنف Any والذي هو الجذر الرئيسيّ في الهرميّة العامّة لأيّ صنفٍ مُستخدَمٍ أثناء البرمجة في Kotlin؛ أي أنّ كلَّ صنفٍ سيكون له الصنف الأعلى (superclass)‏ Any. البنية العامة Any() القيم المعادة يعاد كائنٌ (object) من الصنف Any. أمثلة تنشِئ الدالة Any()‎ في الشيفرة الآتية كائنًا من الصنف Anyباسم obj ، ثم يُحدِّد صنف الكائن المُنشَأ وذلك بالاعتماد على خاصيّة الاسم البسيط للصنف (وهي class.simpleName) : fun main(args: Array<String>) {    val obj = Any()    println(" ${obj::class.simpleName}")  // Any } انظر ...

تطوير برامج Bash جيدة

خصائص الشيفرات الجيدة هذا الشرح عن آخر وحدة بناء للصدفة وهي الشيفرات النصية. إليك بعض الأمور التي يجب أن تراعيها قبل أن نكمل: يجب أن تعمل الشيفرة بدون أخطاء. يجب أن تنفذ المهمة التي كُتبت لها. يجب أن يكون منطق البرنامج محددًا وظاهرًا. لا تنفذ الشيفرة مهامًا غير ضرورية. ينبغي أن تكون الشيفرة قابلة لإعادة استخدامها. الهيكل Structure يجب أن يكون هيكل شيفرة الصدفة مرنًا للغاية، فرغم أن bash بها حرية ظاهرة، إلا أنه يجب تحقيق منطق صحيح وتحكم في ...

التهيئة الأولية للصنف Enum في Kotlin

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

التهيئة الأولية للصنف Enum في Kotlin

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

التهيئة الأولية للصنف MatchGroup في Kotlin

تنشئ الدالة MatchGroup()‎ البانية كائنًا من النوع MatchGroup الذي يمثل النتائج التي نحصل عليها من مجموعة واحدة ضمن MatchResult الخاصة بالصنف Regex. البنية العامة MatchGroup(actual value: String, range: IntRange) منصة التشغيل المطلوبة: JVM. MatchGroup(actual value: String) منصة التشغيل المطلوبة: JS. المعاملات value قيمة مجموعة النتائج التي تم الحصول عليها. range مجال الفهارس التي تحدّد مكان مجموعة النتائج التي تم الحصول عليها. الخاصية range متوافرة على منصة JVM فقط. القيم المعادة يعاد كائن من النوع MatchGroup. أمثلة في الشيفرة الآتية  نعرّف كائنًا من ...

التهيئة الأولية للصنف MatchGroup في Kotlin

تنشئ الدالة MatchGroup()‎ البانية كائنًا من النوع MatchGroup الذي يمثل النتائج التي نحصل عليها من مجموعة واحدة ضمن MatchResult الخاصة بالصنف Regex. البنية العامة MatchGroup(actual value: String, range: IntRange) منصة التشغيل المطلوبة: JVM. MatchGroup(actual value: String) منصة التشغيل المطلوبة: JS. المعاملات value قيمة مجموعة النتائج التي تم الحصول عليها. range مجال الفهارس التي تحدّد مكان مجموعة النتائج التي تم الحصول عليها. الخاصية range متوافرة على منصة JVM فقط. القيم المعادة يعاد كائن من النوع MatchGroup. أمثلة في الشيفرة الآتية  نعرّف كائنًا من ...

التهيئة الأولية للصنف StringBuilder في Kotlin

تنشئ الدالة StringBuilder()‎ كائنًا من النوع StringBuilder. البنية العامة StringBuilder(capacity: Int) StringBuilder(content: CharSequence) StringBuilder() StringBuilder(content: String = "") منصة التشغيل المطلوبة: JS. المعاملات capacity عدد صحيح يحدد حجم الكائن StringBuilder المراد إنشاؤها. content سلسلة من المحارف أو سلسلة نصية تمثل محتوى الكائن StringBuilder المراد إنشاؤها. القيم المعادة يعاد كائنٌ من النوع StringBuilder. أمثلة استعمال الدالة StringBuilder()‎ لإنشاء كائن من النوع StringBuilder: fun main(args: Array<String>) { val sb1 = StringBuilder("hsoub") // ...

التهيئة الأولية للصنف StringBuilder في Kotlin

تنشئ الدالة StringBuilder()‎ كائنًا من النوع StringBuilder. البنية العامة StringBuilder(capacity: Int) StringBuilder(content: CharSequence) StringBuilder() StringBuilder(content: String = "") منصة التشغيل المطلوبة: JS. المعاملات capacity عدد صحيح يحدد حجم الكائن StringBuilder المراد إنشاؤها. content سلسلة من المحارف أو سلسلة نصية تمثل محتوى الكائن StringBuilder المراد إنشاؤها. القيم المعادة يعاد كائنٌ من النوع StringBuilder. أمثلة استعمال الدالة StringBuilder()‎ لإنشاء كائن من النوع StringBuilder: fun main(args: Array<String>) { val sb1 = StringBuilder("hsoub") // ...

البُنى الشرطية في Bash

سنتعلم في هذا الباب كيف نبني سلاسل شرطية في برامجنا بحيث نستطيع اتخاذ إجراءات مختلفة بناء على نجاح الأوامر أو فشلها، وستُحدد تلك الإجراءات باستخدام عبارة if، وسيسمح هذا بتنفيذ مقارنات حسابية ونصية، واختبار رموز الخروج والمدخلات والملفات التي يحتاجها البرنامج. عادة ما يسبق الأوامر في برامج الصدفة اختبارُ if/then/fi لمنع إنشاء الخرج كي يعمل البرنامج في الخلفية أو من خلال أداة cron، أما الشروط الأكثر تعقيدًا فتوضع في عبارة case. ويخبر البرنامج الصدفة الأم عند نجاح اختبار الشرط باستخدام ...

التهيئة الأولية للصنف Regex في Kotlin

تنشئ الدالة Regex()‎ تعبيرًا نمطيًا (regular expression) انطلاقًا من السلسلة النصية المُمرّرة إليه. البنية العامة Regex(pattern: String) Regex(pattern: String, option: RegexOption) Regex(pattern: String, options: Set<RegexOption>) تنشئ الدالة Regex()‎ تعبيرًا نمطيًا من النمط pattern مع ضبطه وفقًا الخيار option أو مجموعة الخيارات options (أو القيمة الافتراضية لهذه الخيارات إن لم يعطَ الوسيط option) التي تضبط ذلك النمط. المعاملات pattern سلسلة نصية تمثل النمط الذي سينشأ منه تعبير نمطي. option كائن من النوع RegexOption يحوي خيارًا واحدًا من خيارات التعابير النمطية. options مجموعة تتألف من ...

التهيئة الأولية للصنف Regex في Kotlin

تنشئ الدالة Regex()‎ تعبيرًا نمطيًا (regular expression) انطلاقًا من السلسلة النصية المُمرّرة إليه. البنية العامة Regex(pattern: String) Regex(pattern: String, option: RegexOption) Regex(pattern: String, options: Set<RegexOption>) تنشئ الدالة Regex()‎ تعبيرًا نمطيًا من النمط pattern مع ضبطه وفقًا الخيار option أو مجموعة الخيارات options (أو القيمة الافتراضية لهذه الخيارات إن لم يعطَ الوسيط option) التي تضبط ذلك النمط. المعاملات pattern سلسلة نصية تمثل النمط الذي سينشأ منه تعبير نمطي. option كائن من النوع RegexOption يحوي خيارًا واحدًا من خيارات التعابير النمطية. options مجموعة تتألف من ...

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

يمثل الصنف Array مصفوفة (مصفوفة Java تحديدًا عند استهداف المنصة JVM). يمكن إنشاء نسخ من هذا الصنف باستعمال الدوال ()‎arrayOf و ()‎arrayOfNulls و ()‎emptyArray الخاصة بالمكتبة القياسية. للمزيد من المعلومات حول المصفوفات، ارجع إلى قسم "المصفوفات" في توثيق الأنواع الأساسية. class Array<T> الدوال البانية <int> تنشِئ الدالة Array()‎ البانية مصفوفةً بحجم size مُحدَّدٍ، حيث يُحسَب كلُّ عنصرٍ فيها عبر استدعاء الدالة init المُحدَّدة، والتي تُعيد عنصرًا في المصفوفة بحسب الفهرس (index) المُعطى. الدوال والخاصيات size تمثِّل الخاصيّة size عدد العناصر الموجودة في المصفوفة (array). iterator تعيد هذه الدالة ...

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

يمثل الصنف BooleanArray مصفوفةً من القيم المنطقية. إن كانت منصة التشغيل المستهدفة هي JVM، فيمكن تمثيل نُسَخ هذا الصنف بالشكل []boolean. class BooleanArray الدوال البانية init تنشئ الدالة BooleanArray()‎ البانية مصفوفة جديدة من الصنف BooleanArray بحجم معين تحوي قيمًا منطقية محدَّدة أو القيمة false المنطقية. الخاصيات size تمثِّل الخاصيّة size عدد العناصر الموجودة في المصفوفة. الدوال get يجلب التابع get()‎ عنصرًا ذي فهرس محدد من المصفوفة. iterator ينشئ التابع iterator()‎ عنصرًا تكراريًّا (iterator) لتكرار بنيةٍ (block) برمجيةٍ على كافّة عناصر المصفوفة المستدعاة معه. set يضبط التابع set()‎ قيمة عنصر ذي فهرس محدد موجود ...

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

يمثل الصنف BooleanArray مصفوفةً من القيم المنطقية. إن كانت منصة التشغيل المستهدفة هي JVM، فيمكن تمثيل نُسَخ هذا الصنف بالشكل []boolean. class BooleanArray الدوال البانية init تنشئ الدالة BooleanArray()‎ البانية مصفوفة جديدة من الصنف BooleanArray بحجم معين تحوي قيمًا منطقية محدَّدة أو القيمة false المنطقية. الخاصيات size تمثِّل الخاصيّة size عدد العناصر الموجودة في المصفوفة. الدوال get يجلب التابع get()‎ عنصرًا ذي فهرس محدد من المصفوفة. iterator ينشئ التابع iterator()‎ عنصرًا تكراريًّا (iterator) لتكرار بنيةٍ (block) برمجيةٍ على كافّة عناصر المصفوفة المستدعاة معه. set يضبط التابع set()‎ قيمة عنصر ذي فهرس محدد موجود ...

استخدام البُنية case

حالات مُبسطة قد يكون من السهل اللجوء إلى استخدام عبارات if لبداهة أسلوبها، لكن تلك السهولة تنقلب إلى حيرة حين تواجه بضعة اختيارات مختلفة لإجراءات محتملة يجب اتخاذها، ولمثل تلك الحالات نستخدم عبارة case، وبنيتها اللغوية هي كما يلي: case EXPRESSION in CASE1) COMMAND-LIST;; CASE2) COMMAND-LIST;; ... CASEN) COMMAND-LIST;; esac وتطابق كل حالة في التعبير السابق نمطًا (pattern)، وتُنفَّذ الأوامر التي في قائمة COMMAND-LIST لأول تطابق، ويُستخدم محرف الأنبوب | لفصل الأنماط المتعددة، وينهي معامِل ( قائمة الأنماط، ويُطلق اسم البند ...

مقدمة إلى الدوال في Bash

ما هي الدوال؟ دوال الصدفة طريقة لتجميع أوامر من أجل تنفيذها لاحقًا باستخدام اسم واحد للمجموعة ككل أو روتين، ويجب أن يكون اسم الروتين فريدًا لا يتكرر في الصدفة أو الشيفرة النصية، وتُنفَّذ كل الأوامر التي تكوِّن الدالة مثل الأوامر العادية تمامًا. تُنفَّذ قائمة الأوامر المرتبطة باسم دالة حين تُستدعى تلك الدالة كأمر بسيط، وتُنفَّذ الدالة داخل الصدفة التي صُرِّح عنها فيها، فلا تُفتح عملية جديدة لتفسير الأوامر. وستظهر الأوامر الخاصة المُضمَّنة قبل دوال الصدفة أثناء البحث عن الأوامر، والأوامر ...

أمثلة عن الدوال في Bash

إعادة التدوير ستجد برامج كثيرة على نظامك تستخدم الدوال كطريقة منظمة لمعالجة سلسلة ما من الأوامر، ففي بعض أنظمة لينكس مثلًا ستجد الملف التعريفي etc/rc.d/init/functions/ يشار إليه كمصدر في كل شيفرات init النصية. وبهذا الأسلوب لا تحتاج إلى كتابة المهام المتكررة سوى مرة واحدة وبشكل عام أيضًا، مهام مثل تفقد ما إن كانت تعمل إحدى المهام، تشغيل أو إيقاف أحد العفاريت (daemons)، وهلم جرا. ثم إذا دعت الحاجة إلى كتابة تلك المهام مرة أخرى فإنك لا تحتاج سوى إعادة تدوير ...

الكلمات المفتاحية (Keywords) والمعاملات (Operators) في لغة Kotlin

 الكلمات المفتاحيّة الثابتة (Hard Keywords) تُعدُّ الكلمات الآتية كلماتٍ مفتاحيّةً في لغة Kotlin وليس ممكنًا استخدامها كمُعرِّفات (identifiers): as تُستخدَم في التحويلات ما بين الأنواع (typecasts) تُحدِّد تسميةً بديلةً (alias) عند عملية الاستيراد (import) as?‎ للتحويلات الحافظة للنوع (safe type casts) break لإنهاء تنفيذ الحلقات (loops) class للتصريح عن الأصناف continue  للاستمرار بالخطوة التالية لأقرب حلقة محيطة (enclosing) do للبدء بحلقة do/while (والتي يُختبَر الشرط فيها لاحقًا) else لتعريف فرعٍ (branch) من تعبير الشرط if والذي سيُنفَّذ عندما يكون الشرط بالقيمة false false ...

Kotlin/Topics

بُنية لغة Kotlin مشابهةٌ لبنية لغة البرمجة Java بوصفها كائنيّة التوجه (OOP)، وبالتالي فهي تعتمد أساسًا على وجود الأصناف (classes) التي تحتوي بدورها على الخاصّيّات (properties) والدوال (functions)، كما وتدعم Kotlin العلاقات فيما بينها مثل الوراثة (inheritance) من صنفٍ أعلى (superclass) أو التداخل فيما بينها (nesting classes)، وتمتاز بوجود مُحدِّدات الوصول (visibility modifiers) للتحكم بعمليات الوصول للبيانات المُخزَّنة، وكذلك فهي تعتمد في بُنيتها على الحزم (packages) والمكتبات (libraries) التي تحتوي على الدوال المساعدة عند الحاجة إليها، أمّا عن بُنية التعليمات ...

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

تعكس الدالة not()‎ القيمة المنطقيَّة المستدعاة معها. يمكن استعمال المعامل ! عوضًا عن هذه الدالة. البنية العامة operator fun not(): Boolean المعاملات other القيمة المنطقية الأخرى التي ستطبق عليها العملية. القيمة المعادة يعاد عكس القيمة المنطقية المعطاة. أمثلة استخدام الدالة ()not لعكس قيمة منطقية معينة: fun main(args: Array<String>) { val x = true println(x.not()) // false println(!x) // false } انظر أيضًا الدالة and()‎: تجري العملية and المنطقية ...

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

تجري الدالة or()‎ العملية or المنطقية بين قيمتين منطقيتين؛ خلافًا للمعامل ||، تتحقق هذه الدالة من كلا القيمتين المنطقيتين. البنية العامة infix fun or(other: Boolean): Boolean وجود الكلمة المفتاحية infix يدل على أنَّ هذه الدالة يمكن استدعاؤها بنمط التدوين الداخليّ (infix notation)؛ أي من خلال حذف المعامل . والأقواس () المُستخدَمَين في الاستدعاء عادةً. المعاملات other القيمة المنطقية الأخرى التي ستطبق عليها العملية. القيمة المعادة تعاد قيمة منطقية تكون ناتج إجراء العملية or على القيمتين المعطيتين. أمثلة استخدام الدالة ()or لتطبيق العملية or على قيمتين منطقيتين: fun ...

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

تجري الدالة and()‎ العملية and المنطقية بين قيمتين منطقيتين؛ خلافًا للمعامل &&، تتحقق هذه الدالة من كلا القيمتين المنطقيتين. البنية العامة infix fun and(other: Boolean): Boolean وجود الكلمة المفتاحية infix يدل على أنَّ هذه الدالة يمكن استدعاؤها بنمط التدوين الداخليّ (infix notation)؛ أي من خلال حذف المعامل . والأقواس () المُستخدَمَين في الاستدعاء عادةً. المعاملات other القيمة المنطقية الأخرى التي ستطبق عليها العملية. القيمة المعادة تعاد قيمة منطقية تكون ناتج إجراء العملية and على القيمتين المعطيتين. أمثلة استخدام الدالة ()and لتطبيق العملية and على قيمتين منطقيتين: fun ...

Kotlin/Native

ما هي تقنية Kotlin/Native؟ تُستخدَم تقنية Kotlin/Native لترجمة شيفرات Kotlin إلى الصيغة الثنائيّة الأساسيّة (native binaries) والتي لا تتطلَّب آلةً افتراضيّة (virtual machine) لتشغيلها، وتشمل كلًا من المعالجات الخلفيّة (أو السند الخلفي [backend]) المعتمدة على تقنيات مكتبة LLVM للمترجِم (compiler) وكذلك تعريف الاستخدام الأساسيّ (native implementation) من مكتبة التشغيل (runtime) في Kotlin، وقد صُمّمت هذه التقنية للسماح بالترجمة في منصّات العمل التي تكون فيها الآلات الافتراضيّة غير متاحةٍ أو مرغوبةٍ (مثل أنظمة iOS والأهداف المدمجة [embedded targets])، أو عندما يحتاج ...

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

تنشئ الدالة to()‎ عنصرًا من النوع Pair مكونًا من الكائن الذي استُدعي معه والمعامل الذي مُرّر إليه، أي العنصر that. البنية العامة infix fun <A, B> A.to(that: B): Pair<A, B> يُلاحَظ وجود الكلمة المفتاحية infix للدلالة على أن هذه الدالة يمكن استدعاؤها بنمط التدوين الداخليّ (infix notation)؛ أي من خلال حذف المعامل . والأقواس () المُستخدَمَين في الاستدعاء عادةً، وللمزيد من التفاصيل راجع توثيق التدوين الداخلي للدوال (infix functions). المعاملات that الكائن المراد استعماله مع الكائن المعطى في إنشاء كائن من ...

الواجهات البرمجية لتوقيت الأداء (Performance Timing API)

الاستقرار: 1- تجريبي. تقدم الواجهة البرمجية لتوقيت الأداء تطبيقًا لمواصفات W3C Performance Timeline. الغرض من  الواجهة البرمجية (API) هو دعم مجموعة من مقاييس الأداء عالية الدقة. والتي هي نفس واجهات الأداء المُطبّقة في متصفحات الويب الحديثة. const { PerformanceObserver, performance } = require('perf_hooks'); const obs = new PerformanceObserver((items) => { console.log(items.getEntries()[0].duration); performance.clearMarks(); }); obs.observe({ entryTypes: ['measure'] }); performance.mark('A'); doSomeLongRunningProcess(() => { performance.mark('B'); performance.measure('A to B', 'A', 'B'); }); الصنف: Performance أُضيف في الإصدار: 8.5.0. performance.clearMarks([name‎]‎)‎ أُضيفت في الإصدار: 8.5.0 name <string>‎ إذا ...

الدوال من المرتبة الأعلى (Higher-Order Functions) و Lambdas

الدوال من المرتبة الأعلى (Higher-Order Functions) وهي الدوال التي تقبل دوالًا أخرى كمعاملاتٍ (parameters) لها، أو تلك التي تُعيد (return) دوالًا أخرى كنتيجة لها، وكمثالٍ عنها لنأخذ الدالة lock()‎، وهي الدالة التي تقبل كائنًا lock ودالةً أخرى، حيث ستحصلُ الدالة على الكائن lock وتُنفِّذُ الدالةَ الوسيطةَ ثم تُحرِّر القفل في النهاية، كما في الشيفرة: fun <T> lock(lock: Lock, body: () -> T): T { lock.lock() try { ...

أسئلة شائعة عن لغة Kotlin

ما هي لغة Kotlin؟ تُعدُّ Kotlin إحدى لغات البرمجة مفتوحة المصدر (OSS) والمكتوبة ستاتيكيًّا، وتستهدف كلًا من بيئة JVM و Android و JavaScript و Native، وقد طُوِّرت من قِبل شركة JetBrains بدءًا من العام 2010 حيث كانت مفتوحة المصدر منذ بداياتها الأولى، ونٌشر الإصدار الرسميّ Kotlin 1.0 في الشهر الثاني (شباط) من عام 2016. ما النسخة الحاليّة للغة Kotlin؟ نٌشر الإصدار الأخير للغة Kotlin في الأوّل من الشهر الثالث (آذار) من عام 2018 وهو الإصدار Kotlin 1.2.30. هل Kotlin مجانيّة؟ ...

استخدام لغة Kotlin للتطوير في بيئة Android

تُعدُّ لغة Kotlin أداةً مناسبةً لتطوير تطبيقات Android لأنّها تزوِّد بمنصةٍ للعمل في نظام Android بميّزات لغات البرمجة الحديثة بدون فرض أي قيودٍ جديدة. ميزات استخدام لغة Kotlin للتطوير في بيئة Android التوافقيّة (Compitability): تتوافق لغة Kotlin كليًّا مع بيئة JDK6، وبهذا تتيح  تشغيل التطبيقات المكتوبة بلغة Kotlin على الأجهزة ذات الإصدارات الأقدم من أنظمة Android بدون أي مشاكل تُذكر، كما وتدعم برمجيةُ Android Studio أدوات لغة Kotlin بشكلٍ تامّ ومتوافقٍ مع أنظمة بناء Android. الأداء (Performance): تعمل التطبيقات المكتوبة ...

استخدام لغة Kotlin في نطاق JavaScript

تتيح لغة Kotlin إمكانيّة استهداف لغة JavaScript من خلال تحويل (transpiling) شيفرات Kotlin إلى ما يماثلها في JavaScript ؛ إذ تستهدف بالوقت الحاليّ معيارECMAScript 5.1، ومن المُخطَّط له أيضًا التوافق مع معيار ECMAScript 2015 لاحقًا. عند استخدام لغة Kotlin بهدف كتابة شيفرات JavaScript فستُحوَّل الشيفرات المكتوبة بلغة Kotlin (بعدِّها جزءًا من المشروع والمكتبة القياسيّة في Kotlin) إلى شيفرة JavaScript، ولكنّ هذا لا يشمل أيًّا ممّا يتعلَّق ببيئة JDK أو JVM أو Java أو أيّ من منصّاتها أو مكتباتها المُستخدَمة، ويُستبعَد ...

استخدام لغة Kotlin في تطوير تطبيقات الخادم (Server)

تُعدّ لغة Kotlin أداةً قويةً في تطوير تطبيقات الخادم (server)؛ إذ تكون الشيفرات فيها دقيقةً ومعبِّرة، وتمتاز بالتوافقيّة التامّة مع لغة Java ومن السهل تعلُّمها بسرعة. ميزات استخدام لغة Kotlin لتطوير تطبيقات الخادم (Server) القدرة على التعبير (Expressiveness): تساعد مميّزات لغة Kotlin المبتكرَة (مثل دعمها للمنشِئ الحافظ للنوع (type-safe builder) والخاصّيات المُعمّمة (delegated properties)) على إنشاء البنى التجريديّة (abstraction) سهلةِ الاستخدام. قابلية التوسّع (Scalability): تدعم لغة Kotlin ميّزة الروتينات المساعدة (coroutines)، وهي بهذا تتيح -في تطبيقات الخادم- إمكانيّة التوسّع لعددٍ ...

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