نتائج البحث

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

الكلمة المحجوزة inherit

الكلمة المحجوزة inherit في CSS تؤدي إلى جعل العنصر يأخذ القيمة المحسوبة لهذه الخاصية من العنصر الأب، ويمكن تطبيق هذه القيمة على جميع خاصيات CSS بما في ذلك خاصية all المختصرة. إذا كانت الخاصية موروثة، فيمكن استخدام هذه القيمة للتوضيح أو لتجاوز قيمة قاعدة أخرى، أما للخاصيات غير الموروثة، فستجد أنَّ من غير المنطقي استخدام هذه القيمة وربما تضع بالحسبان استخدام الكلمة المحجوزة initial. لاحظ أنَّ الوراثة تكون من العنصر الأب في شجرة المستند دومًا، حتى لو لم يكن العنصر ...

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

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

التابع inherited في الصنف Class في روبي

يُستدعَى التابع inherited كرد نداء في كل مرة يُنشأ فيها صنف فرعي (subclass) من الصنف الحالي. البنية العامة inherited(subclass) أمثلة مثال على استخدام التابع inherited: class Foo def self.inherited(subclass) puts "New subclass: #{subclass}" end end class Bar < Foo end class Baz < Bar end انظر أيضًا التابع new: يُنشئ صنفًا جديدًا مجهولًا غير مسمى (unnamed) من الصنف الأب (superclass) الممرر إليه (أو من الصنف Object إن لم يمرر إليه أي شيء). التابع allocate: يحجز مساحةً من الذاكرة لكائن جديد من الصنف class ...

الهيكلية التفرعية للوراثة (Parallel Inheritance Hierarchies)

توصيف المشكلة يتطلَّب إنشاءُ صنفٍ فرعيٍّ (subclass) لأحد الأصناف إنشاءَ صنفٍ فرعيٍّ ثانٍ لصنفٍ آخر غيره. أسبابها لا تبدو المشكلة واضحةً في الهيكليّات (hierarchies) الصغيرة، ولكنها تبدأ بالظهور مع إضافة أصناف (classes) جديدةٍ ممّا يجعل إجراء التعديلات أمرًا صعبًا. وما الحل؟ التخلُّص من التكرار التفرعيّ بين الهيكليّتين (hierarchies)، ويتمّ بخطوتين: إنشاء مرجعيّة (reference) من إحدى الهيكليّتين التفرعيّتين إلى الهيكليّة الثانية. إزالة الهيكليّة في الصنف المُشار إليه (referred class)، وذلك بنقل التوابع (move methods) ونقل الحقول (move fields). إليك المزيد ستحصل ...

استبدال التفويض بالتوريث (Replace Delegation with Inheritance)

المشكلة يحتوي الصنف على العديد من التوابع البسيطة التي تفوِّض إلى كل التوابع في صنفٍ آخر. الحل جعل الصنف مفوِّض وارث، الأمر الذي يجعل تابع التفويض غير ضروري. مثال قبل إعادة التصميم التابع الموجود في الصنف Employee مفوَّض إلى التابع ()getName في الصنف Person: يحتوي الصنف على العديد من التوابع البسيطة التي تفوِّض إلى كل التوابع في صنفٍ آخر. بعد إعادة التصميم جعل الصنف Employee يرث من الصنف Person والتخلص من التفويض: أصبح الصنف مفوِّض وارث، الأمر الذي يجعل تابع ...

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

يحوي الصنف DeprecationLevel مستويات تصف درجات الإهمال (deprecation levels). enum class DeprecationLevel القيم القابلة للعد (Enum Values) WARNING تشير القيمة WARNING إلى وجود تحذير تولد نتيجة استعمال عنصر مهمل (deprecated element). ERROR تشير القيمة ERROR إلى وجود خطأٍ تولد نتيجة استعمال عنصر مهمل (deprecated element). HIDDEN تشير القيمة HIDDEN إلى أن العنصر المهمل (deprecated elements) غير متاح للاستخدام ضمن الشيفرة. الخاصيات الموروثة (Inherited Properties) name تمثِّل الخاصية Enum.name اسم الثابت المعرف في الكائن enum الذي استُدعي معها كما سُمّي أُثناء تعريف هذا الكائن. ordinal تمثل الخاصية Enum.ordinal ترتيب (ordinal) الثابت المعرف في ...

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

يحوي الصنف DeprecationLevel مستويات تصف درجات الإهمال (deprecation levels). enum class DeprecationLevel القيم القابلة للعد (Enum Values) WARNING تشير القيمة WARNING إلى وجود تحذير تولد نتيجة استعمال عنصر مهمل (deprecated element). ERROR تشير القيمة ERROR إلى وجود خطأٍ تولد نتيجة استعمال عنصر مهمل (deprecated element). HIDDEN تشير القيمة HIDDEN إلى أن العنصر المهمل (deprecated elements) غير متاح للاستخدام ضمن الشيفرة. الخاصيات الموروثة (Inherited Properties) name تمثِّل الخاصية Enum.name اسم الثابت المعرف في الكائن enum الذي استُدعي معها كما سُمّي أُثناء تعريف هذا الكائن. ordinal تمثل الخاصية Enum.ordinal ترتيب (ordinal) الثابت المعرف في ...

الواجهة ‎‎Annotation في Kotlin

هي الواجهة الأساسيّة التي يُعرَّف استخدامها (implemented) ضمنيًا في جميع واجهات التوصيفات (annotation interfaces)، وللمزيد من التفاصيل راجع التوصيفات (annotations) في لغة Kotlin. interface Annotation الدوال المورثة (Inherited Functions) equals تتحقق الدالة equals()‎ إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعيت معه. hashCode تعيد الدالة hashCode()‎ الشيفرة Hash الخاصّة بالكائن الذي استُدعي معها. toString تحول الدالة toString()‎ الكائن الذي يُستدعى معه إلى سلسلة نصية (String). الخاصيات الإضافية (Extension Properties) annotationClass تُستخدَم هذه الخاصيّة للحصول على نسخةٍ (instance) من الصنف KClass بحسب نوع التوصيف الحاليّ. ...

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

يوفر الصنف Destructured مركبات الإسناد بالتفكيك (destructuring assignment) لمجموعة من القيم. يسمح الإسناد بالتفكيك باستخراج القيم الموجودة في المصفوفات أو المجموعات أو خاصيات أحد الكائنات ...إلخ. إلى متغيرات مستقلة. تطابق الدالة component1 قيمة المجموعة الأولى، وتطابق الدالة component2 قيمة المجموعة الثانية، وهلم جرًا. إن كانت المجموعة في التعبير النمطي اختيارية ولم ترصد هذه المجموعة أي عملية تطابق تُذكر، فيمكن حينئذٍ أن تساوي قيمة المكون المقابل لهذه المجموعة سلسلةً نصيةً فارغةً. class Destructured الخاصيات match الدوال component1 component2 component3 component4 component5 component6 component7 ...

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

يوفر الصنف Destructured مركبات الإسناد بالتفكيك (destructuring assignment) لمجموعة من القيم. يسمح الإسناد بالتفكيك باستخراج القيم الموجودة في المصفوفات أو المجموعات أو خاصيات أحد الكائنات ...إلخ. إلى متغيرات مستقلة. تطابق الدالة component1 قيمة المجموعة الأولى، وتطابق الدالة component2 قيمة المجموعة الثانية، وهلم جرًا. إن كانت المجموعة في التعبير النمطي اختيارية ولم ترصد هذه المجموعة أي عملية تطابق تُذكر، فيمكن حينئذٍ أن تساوي قيمة المكون المقابل لهذه المجموعة سلسلةً نصيةً فارغةً. class Destructured الخاصيات match الدوال component1 component2 component3 component4 component5 component6 component7 ...

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

الخاصيات الموروثة (Inherited Properties) name تعيد الخاصية name اسم الثابت من الكائن enum الذي استُدعيت عبره، كما سُمّيت أُثناء تعريف ذلك الكائن. ordinal تعيد الخاصية ordinal ترتيب الثابت من الكائن enum الذي استُدعيت عبره  enumeration constant‎)‎‎)، أي ترتيبها في تصريح الكائن enum،بحيث تأخذ المُركّبة الأولى العدد 0. الدوال الموروثة clone يطلق التابع clone()‎ استثناءً (exception) لأنّ ثوابت enum  لا يمكن أن تُنسخ. هذا التابع يمنع الأصناف من النوع Enum من أن ترِث من الصنفCloneable. compareTo تقارن الدالةcompareTo()‎ بين قيمة العنصر الذي استُدعيت عبره والقيمة المُمرّرة، إذ تعيد القيمة 0 إن كانا متساويين، أو تعيد قيمة سلبية ...

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

الخاصيات الموروثة (Inherited Properties) name تعيد الخاصية name اسم الثابت من الكائن enum الذي استُدعيت عبره، كما سُمّيت أُثناء تعريف ذلك الكائن. ordinal تعيد الخاصية ordinal ترتيب الثابت من الكائن enum الذي استُدعيت عبره  enumeration constant‎)‎‎)، أي ترتيبها في تصريح الكائن enum،بحيث تأخذ المُركّبة الأولى العدد 0. الدوال الموروثة clone يطلق التابع clone()‎ استثناءً (exception) لأنّ ثوابت enum  لا يمكن أن تُنسخ. هذا التابع يمنع الأصناف من النوع Enum من أن ترِث من الصنفCloneable. compareTo تقارن الدالةcompareTo()‎ بين قيمة العنصر الذي استُدعيت عبره والقيمة المُمرّرة، إذ تعيد القيمة 0 إن كانا متساويين، أو تعيد قيمة سلبية ...

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

يوفّر قيما مُرقّمة (enumeration values) لاستخدامها في تعيين خيارات التعابير النمطية. الخاصيات الموروثة (Inherited Properties) name تعيد الخاصية name اسم الثابت من الكائن enum الذي استُدعيت عبره، كما سُمّيت أُثناء تعريف ذلك الكائن. ordinal تعيد الخاصية ordinal ترتيب الثابت من الكائن enum الذي استُدعيت عبره  enumeration constant‎)‎‎)، أي ترتيبها في تصريح الكائن enum،بحيث تأخذ المُركّبة الأولى العدد 0. الدوال الموروثة clone يطلق التابع clone()‎ استثناءً (exception) لأنّ ثوابت enum  لا يمكن أن تُنسخ. هذا التابع يمنع الأصناف من النوع Enum من أن ترِث من الصنفCloneable. compareTo تقارن الدالةcompareTo()‎ بين قيمة العنصر الذي استُدعيت عبره ...

الواجهة ‎‎MatchResult‎ في Kotlin

تمثل الواجهة MatchResult نتائج مطابقة واحدة لتعبير نمطي. interface MatchResult الأنواع Destructured يوفر هذا الصنف مركبات الإسناد بالتفكيك (destructuring assignment) لمجموعة من القيم. الخاصيات destructured‎ تمثل هذه الخاصية نسخةً من الصنف Destructured توفّر مكونات عملية الإسناد بالتفكيك (destructuring assignment) التي تطبق على قيم المجموعة المُطابقة. groupValues تمثل هذه الخاصية قائمة بقيم المجموعة المفهرسة المتطابقة. groups تمثل هذه الخاصية مجموعةً (collection) تضم جميع المجموعات (groups) المتطابقة باستعمال تعبير نمطي محدد. range تمثل هذه الخاصية مجال الفهارس الذي يحدد مكان مُطابقة تعبير نمطي محدد في السلسلة النصية الأصلية. value تمثل هذه الخاصية السلسلة النصية المُدخلة، أو ...

الواجهة ‎‎MatchResult‎ في Kotlin

تمثل الواجهة MatchResult نتائج مطابقة واحدة لتعبير نمطي. interface MatchResult الأنواع Destructured يوفر هذا الصنف مركبات الإسناد بالتفكيك (destructuring assignment) لمجموعة من القيم. الخاصيات destructured‎ تمثل هذه الخاصية نسخةً من الصنف Destructured توفّر مكونات عملية الإسناد بالتفكيك (destructuring assignment) التي تطبق على قيم المجموعة المُطابقة. groupValues تمثل هذه الخاصية قائمة بقيم المجموعة المفهرسة المتطابقة. groups تمثل هذه الخاصية مجموعةً (collection) تضم جميع المجموعات (groups) المتطابقة باستعمال تعبير نمطي محدد. range تمثل هذه الخاصية مجال الفهارس الذي يحدد مكان مُطابقة تعبير نمطي محدد في السلسلة النصية الأصلية. value تمثل هذه الخاصية السلسلة النصية المُدخلة، أو ...

Kotlin/Topics

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

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

يمثل الصنف Regex تعبيرًا نمطيا قابلًا للتعديل (immutable regular expression). إن أردت الاطلاع على المزيد من المعلومات المتعلقة بصياغة النمط (pattern)، انتقل إلى صفحة الصنف Pattern. actual class Regex : Serializable الدوال البانية <init> تنشئ الدالة Regex()‎ تعبيرًا نمطيًا (regular expression) انطلاقًا من السلسلة النصية المُمرّرة إليه. الخاصيات options تمثل هذه الخاصية مجموعةَ الخيارات التي استُخدمت في إنشاء التعبير النمطي الذي استُدعي معها. pattern تمثل هذه الخاصية النمط الأولي الذي استُخدم في إنشاء التعبير النمطي الذي استُدعي معها. الدوال containsMatchIn ...

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

يمثل الصنف Regex تعبيرًا نمطيا قابلًا للتعديل (immutable regular expression). إن أردت الاطلاع على المزيد من المعلومات المتعلقة بصياغة النمط (pattern)، انتقل إلى صفحة الصنف Pattern. actual class Regex : Serializable الدوال البانية <init> تنشئ الدالة Regex()‎ تعبيرًا نمطيًا (regular expression) انطلاقًا من السلسلة النصية المُمرّرة إليه. الخاصيات options تمثل هذه الخاصية مجموعةَ الخيارات التي استُخدمت في إنشاء التعبير النمطي الذي استُدعي معها. pattern تمثل هذه الخاصية النمط الأولي الذي استُخدم في إنشاء التعبير النمطي الذي استُدعي معها. الدوال containsMatchIn ...

الانتقال الفرعيّ Delegation في Kotlin

أثبت نموذج الانتقال الفرعيّ فعّاليته كبديلٍ جيّدٍ عن وراثة تعريف الاستخدام (implementation inheritance) إذ تدعم لغة Kotlin هذه الميّزة بشكلٍ طبيعيّ دون الحاجة إلى أيّ نوع قياسيّ من الشيفرات، وبالتالي فإنّ الصنف المُشتقّ (Derived) يرِث من الواجهة (Base) وينقل فرعيًا (delegate) كلَّ توابعه العامّة (public methods) إلى كائنٍ مُحدَّدٍ، كما في الشيفرة الآتية: interface Base { fun print() } class BaseImpl(val x: Int) : Base { override fun print() { print(x) } } class Derived(b: Base) : Base ...

أصناف البيانات (Data Classes) في لغة Kotlin

تُنشَأ بعض الأصناف بهدف تخزين البيانات فيها بشكلٍ أساسيّ، وبالتالي فإنّ كلّ ما تقوم به هذه الأصناف من وظائف يرتبط بالبيانات، وهذا ما يُسمى بأصناف البيانات في لغة Kotlin وتُعرَّف بالمُحدِّد data كما يلي: data class User(val name: String, val age: Int) قواعد عامّة يقوم المُترجِم في الأصناف من هذه النوع باشتقاق العناصر (deriving members) الآتية من كلِّ الخاصّيّات المُعرَّفة في الباني الأساسيّ (primary constructor): كلًا من equals()‎ و hashCode()‎ الدالة toString()‎ بشكلها ‎"User(name=John, age=42‎)‎"‎ الدوال بالصيغة componentN() functions بما ...

الأصناف المُغلَقة (Sealed Classes) في لغة Kotlin

تُستخدَم الأصناف المُغلَقة لتمثيل الهرميّة (hierarchy) المحدودة للأصناف؛ وذلك عندما يكون نوع القيمة هو أحد الأنواع الموجودة في مجموعةٍ مُحدَّدةٍ (limited set) وليس أيّ نوع آخر، وبالتالي تُعدُّ هذه الأصناف إضافةً (extension) لأصناف الثوابت المُتعدَّدة (enum classes)، إذ إنّ مجموعة القيم لنوع enum محدودة أيضًا ولكل ثابت فيها نسخةٌ (instance) واحدةٌ فقط، بينما يمكن أن يكون للصنف الفرعيّ (subclass) من الصنف المغلق أكثر من نسخةٍ تحتوي على الحالة (case). ويُستخدَم المُحدِّد (modifier)‏ sealed قبل اسم الصنف للتصريح عن أنّه من ...

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

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

الكلمة المحجوزة unset

الكلمة المحجوزة unset في CSS تُعيد ضبط قيمة الخاصية إلى قيمتها المورثة إن ورثت القيمة من العنصر الأب، أو إلى قيمتها الابتدائية إن لم ترثها؛ بصياغة أخرى، ستسلك هذه الكلمة المحجوزة سلوك inherit في الحالة الأولى، وسلوك initial في الحالة الثانية، ويمكن استخدام على جميع خاصيات CSS، بما في ذلك خاصية all المختصرة. أمثلة إعادة ضبط قيمة الخاصية color للعنصر <p> الموجود داخل العنصر <div> ذو الصنف bar إلى قيمتها الموروثة، ألا وهي green؛ أي كأننا ضبطنا قيمة الخاصية color إلى الكلمة ...

الكلمة المحجوزة initial

الكلمة المحجوزة initial في CSS تُطبِّق القيمة الابتدائية للخاصية على العنصر، ويمكن استخدام على جميع خاصيات CSS، بما في ذلك خاصية all المختصرة. لاحظ أنَّ القيمة الابتدائية في الخاصيات التي ورثت قيمها عن آبائها قد تكون مُفاجئة لك، لذا قد ترى أنَّ استخدام إحدى الكلمات المحجوزة inherit أو unset أو revert مناسبٌ أكثر. أمثلة مثال عن ضبط لون الفقرة <p> إلى اللون الأحمر، ثم استخدام الكلمة المحجوزة initial على العنصر <em> لإعادة قيمة الخاصية color إلى قيمتها الابتدائية (اللون الأسود). ...

الواجهة ‎‎MatchNamedGroupCollection‎ في Kotlin

توسع هذه الواجهة الصنف MatchGroupCollection عبر تعريف طريقةٍ لجلب المجموعات المتطابقة (matched groups) عن طريق أسمائها عندما يدعم Regex ذلك. interface MatchNamedGroupCollection : MatchGroupCollection الإصدار المطلوب: kotlin 1.1. الدوال (Functions) get تعيد هذه الدالة نسخةً من الصنف MatchGroup إن كانت المجموعة التي تحمل الاسم المُمرّر إليها متطابقَة. الدوال الموروثة (Inherited Functions) get تعيد هذه الدالة نسخةً من الصنف MatchGroup إن كانت المجموعة التي تحمل الاسم المُمرّر إليها متطابقَة. الخاصيات الإضافية (Extension Properties) indices تُستخدَم هذه الخاصيّة للحصول على الفهارس الصحيحة (valid indices) للمصفوفة أو المجموعة (collection). الدوال ...

الواجهة ‎‎MatchNamedGroupCollection‎ في Kotlin

توسع هذه الواجهة الصنف MatchGroupCollection عبر تعريف طريقةٍ لجلب المجموعات المتطابقة (matched groups) عن طريق أسمائها عندما يدعم Regex ذلك. interface MatchNamedGroupCollection : MatchGroupCollection الإصدار المطلوب: kotlin 1.1. الدوال (Functions) get تعيد هذه الدالة نسخةً من الصنف MatchGroup إن كانت المجموعة التي تحمل الاسم المُمرّر إليها متطابقَة. الدوال الموروثة (Inherited Functions) get تعيد هذه الدالة نسخةً من الصنف MatchGroup إن كانت المجموعة التي تحمل الاسم المُمرّر إليها متطابقَة. الخاصيات الإضافية (Extension Properties) indices تُستخدَم هذه الخاصيّة للحصول على الفهارس الصحيحة (valid indices) للمصفوفة أو المجموعة (collection). الدوال ...

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

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

التابع Module.const_get‎ في روبي

يتحقق التابع const_get من وجود ثابت باسم محدد في الوحدة التي استُدعي معها. في حال تعيين المعامل inherit، فسيشمل البحث الأسلاف أيضًا (وكذلك Object إن كانت الوحدة من النوع Module). تُعاد قيمة الثابت إذا عُثر على تعريف له؛ خلا ذلك، سيُطلق الخطأ NameError. Math.const_get(:PI) #=> 3.14159265358979 سيبحث التابع const_get بشكل تكراري (recursively) عن أسماء الثوابت إذا تم توفير اسم صنف من مجال أسماء (namespaced class name). اطلع مثلًا على المثال التالي: module Foo; class Bar; end end Object.const_get 'Foo::Bar' تؤخذ الراية inherit بالحسبان ...

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

تمثل الواجهة CharSequence سلسلةً من المحارف قابلةً للقراءة. interface CharSequence الخاصيات length تمثل الخاصية CharSequence.length عدد عناصر سلسلة المحارف (CharSequence) المستدعاة معها. الدوال get تجلب الدالة get()‎‎ المحرف ذا الفهرس الممرَّر إليها من سلسلة المحارف المستدعاة معها. subSequence تجلب الدالة subSequence()‎‎ جزءًا محددًا يقع في سلسلة المحارف التي استٌدعيت معها. الدوال الموروثة (Inherited Functions) equals تتحقق الدالة equals()‎ إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعيت معه.  hashCode تعيد الدالة hashCode()‎ الشيفرة Hash الخاصّة بالكائن الذي استُدعي معها. toString تحول الدالة toString()‎ الكائن الذي يُستدعى معه إلى سلسلة نصية (String). الخاصيات الإضافية (Extension Properties) ...

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

تمثل الواجهة CharSequence سلسلةً من المحارف قابلةً للقراءة. interface CharSequence الخاصيات length تمثل الخاصية CharSequence.length عدد عناصر سلسلة المحارف (CharSequence) المستدعاة معها. الدوال get تجلب الدالة get()‎‎ المحرف ذا الفهرس الممرَّر إليها من سلسلة المحارف المستدعاة معها. subSequence تجلب الدالة subSequence()‎‎ جزءًا محددًا يقع في سلسلة المحارف التي استٌدعيت معها. الدوال الموروثة (Inherited Functions) equals تتحقق الدالة equals()‎ إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعيت معه.  hashCode تعيد الدالة hashCode()‎ الشيفرة Hash الخاصّة بالكائن الذي استُدعي معها. toString تحول الدالة toString()‎ الكائن الذي يُستدعى معه إلى سلسلة نصية (String). الخاصيات الإضافية (Extension Properties) ...

الدوال (Functions) في لغة Kotlin

التصريح عن الدوال (Function Declarations) يُصرَّح عن الدوال في لغة Kotlin باستخدام الكلمة المفتاحيّة fun كما يلي: fun double(x: Int): Int { return 2 * x } استخدام الدوال (Function Usage) يكون استدعاء الدوال كما في أيّ لغة برمجةٍ أخرى بالشكل: val result = double(2) أمّا استدعاء الدوال من الأصناف فيعتمد على المعامل . كما في الشيفرة: Sample().foo() // إنشاء كائنٍ من الصنف واستدعاء الدالة عبره المعاملات (Parameters) تُعرَّف المعاملات بالصيغة المُعتمدَة في لغة Pascal وهي name: type ، ...

القيمة المستخدمة

القيمة المستخدمة (used value) لإحدى خاصيات CSS هي القيمة النهائية لتلك الخاصية بعد إجراء جميع الحسابات اللازمة. بعد أن ينتهي المتصفح من إجراء حساباته، فسيكون لكل خاصية لها مُستخدَمة، والقيم المستخدمة للخاصيات المتعلقة بالأبعاد (مثل width أو line-height) ستكون بواحدة البكسل، أما القيم المستخدم للخاصيات المختصرة (مثل background) فستحتوي على قيم الخاصيات الفرعية (مثل background-color). تفاصيل عن القيمة المستخدمة هنالك أربع خطوات لحساب القيمة النهاية لخاصيات CSS، فأول خطوة تتضمن الحصول على القيمة المُحدَّدة التي تأتي من أعلى قاعدة تحديدًا؛ ...

أنواع البيانات (Data Types) في Kotlin

إن كلَّ عنصرٍ في Kotlin يعد كائنًا إذ يمكن استدعاء الدوال (member functions) والخاصّيّات (properties) عبر أي متغيِّر (variable)، ولبعض الأنواع تمثيلها الداخلي الخاص بها؛ فعلى سبيل المثال تُمثَّل الأعداد والمحارف والقيم المنطقية (boolean) كقيمٍ أساسيّةٍ أثناء التشغيل (runtime) ولكنها بالنسبة للمستخدم مجرّد أصنافٍ عادية، وتناقش هذه الصفحة الأنواع الرئيسيّة للبيانات في Kotlin وهي: الأعداد، والمحارف، والقيم المنطقية (boolean)، والمصفوفات، والسلاسل النصيّة. الأعداد (Numbers) تتعامل لغة Kotlin مع البيانات العدديّة بطريقةٍ مماثلةٍ للغة Java ولكن بفوارق بسيطة، فلا تدعم مثلًا ...

CSS/Topics/Misc

العنصر الوصف ‎--*‎ أسماء الخاصيات التي تُسبَق بشرطتين --، مثل ‎--example-name، تُمثِّل الخاصيات المخصصة (custom properties) التي تُسنَد لها قيمة يمكن إعادة استخدامها في المستند عبر الدالة var()‎. attr()‎ الدالة attr()‎ في CSS تُستعمَل للحصول على قيمة إحدى خاصيات العنصر المُحدَّد واستخدامها في أنماط CSS، ويمكن استعمالها أيضًا على العناصر الزائفة (pseudo-elements) وفي هذه الحالة ستُستخدَم قيمة خاصية العنصر الأصل. calc()‎ الدالة calc()‎ في CSS تسمح بإجراء عمليات حسابية عند تحديد قيم خاصيات CSS، ويمكن استخدامها في أي موضع يُسمَح فيه باستخدام أنواع البيانات<length> و <percentage> و <angle> و <time> و <number> و<integer>. inherit الكلمة المحجوزة inherit في ...

الدالة 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 الكائن المراد استعماله مع الكائن المعطى في إنشاء كائن من ...

التابع ‎Module.const_defined?‎‎ في روبي

يتحقق التابع const_defined?‎ مما إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحوي الثابت المعطى. Float.const_defined?(:EPSILON) #=> true, found in Float itself Float.const_defined?("String") #=> true, found in Object (ancestor) BasicObject.const_defined?(:Hash) #=> false إذا كانت الوحدة من النوع Module، فسيتم إضافة إلى ذلك فحص Object وكذلك أسلافه. Math.const_defined?(:String) #=> true, found in Object في كل الأصناف أو الوحدات المفحوصة، إذا لم يكن الثابت موجودًا وكان التحميل التلقائي (autoload) مفعلًا له، ...

الصنف Class في روبي

تُعدُّ الأصناف كائناتٍ من الدرجة الأولى (first-class objects) في روبي، وتعدُّ جميعها نُسخٌ من الصنف Class. عادةً، يمكن عادةً إنشاء صنف جديد بالشكل التالي: class Name # تكتب هنا الشيفرة التي تعرف سلوك الصنف end عندما يُنشَأ صنف جديد، يهيَّأ كائن من النوع Class ويسند إلى ثابت عام (global constant، هو Name في المثال السابق). عند استدعاء Name.new لإنشاء كائن جديد، يُنفَّذ التابع new الخاص بالصنف Class بشكل افتراضي. يمكن إثبات ذلك من خلال إعادة تعريف التابع new: class Class alias old_new ...

القيمة المحسوبة

القيمة المحسوبة (computed value) لإحدى خاصيات CSS تُحسَب من القيمة المُحدَّدة كما يلي: التعامل مع القيم الخاصة inherit و initial. إجراء الحسابات اللازمة للوصول إلى القيمة الموصوفة في الجدول الموجود في صفحة الخاصيات بعنوان «القيمة المحسوبة» (والمأخوذ من المواصفة). العمليات الحسابية المطلوبة للوصول إلى القيمة المحسوبة للخاصية قد تتضمن تحويل الواحدات النسبية (مثل em أو النسبة المئوية <percentage>) إلى أطوال مطلقة. على سبيل المثال، إذا كان للعنصر القيمة 16px للخاصية font-size، والقيمة 2em للخاصية padding-top، فإنَّ القيمة المحسوبة للخاصية padding-top ...

الارتباط الوثيق غير المناسب (Inappropriate Intimacy)

توصيف المشكلة استخدام أحد الأصناف (class) الحقولَ (fields) والتوابعَ (methods) الداخليّة لصنفٍ آخر بكثرة. أسبابها تعاملُ الأصناف (classes) مع بعضها بكثرةٍ، وهذا ما يجب أن تكون على درايةٍ به، إذ إنّ التصميم الجيّد يشترط الحدَّ من التواصل فيما بينها ما أمكن، وهذا سيسهِّل صيانتها (maintenace) وإعادة استخدامها (reuse). وما الحل؟ نقلُ التوابع (move methods) ونقل الحقول (move fields) من الصنف الحاليّ إلى الصنف الآخر الذي تُستخدَم فيه، وهو الحلُّ الأبسط عندما لا يحتاج الصنف الأول تلك الحقول والتوابع المنقولة. استخراج ...

التعامل مع التعميم (Dealing with Generalization)

يملك التجريد (Abstraction) تقنيات إعادة التصميم الخاصة به والمرتبطة بشكل أساسي بوظيفة النقل على طول التسلسل الهرمي لوراثة الصنف (class inheritance hierarchy)، وبإنشاء أصناف وواجهات جديدة، وبتبديل التفويض مكان الوراثة أو العكس. تقنيات هذا القسم هي: استخراج الأصناف الفرعية (Extract Subclass) المشكلة: يكون للصنف ميزات تستعمل فقط في حالات معينة. الحل: إنشاء صنف فرعي واستخدامه في هذه الحالات. استخراج الأصناف الفائقة (Extract Superclass) المشكلة: وجود صنفين لهما حقول وتوابع مشتركة. الحل: إنشاء صنف أب مشترك لهما ونقل جميع الحقول والتوابع ...

الخاصية text-emphasis-color

الخاصية text-decoration-color في CSS تُحدِّد اللون المستخدم لرسم علامة التوكيد (emphasis mark) المستخدمة على كل محرف نصي في العنصر؛ يمكن ضبط قيمة هذه الخاصية باستعمال الخاصية المختصرة text-emphasis. بطاقة الخاصية القيمة الابتدائية currentcolor تُطبَّق على جميع العناصر. قابلة للوراثة لا قابلة للتحريك نعم الوسائط مرئية القيمة المحسوبة القيمة اللونية المحسوبة. /* القيمة الابتدائية */ text-emphasis-color: currentColor; /* <color> */ text-emphasis-color: #555; text-emphasis-color: blue; text-emphasis-color: rgba(90, 200, 160, 0.8); text-emphasis-color: transparent; /* القيم العامة */ text-emphasis-color: inherit; text-emphasis-color: initial; text-emphasis-color: unset; أمثلة مثال عن استخدام الخاصية text-emphasis-color على العنصر <strong> مع الخاصية ...

الوراثة الفائضة (Refused Bequest)

توصيف المشكلة استفادة الصنف الفرعيّ (subclass) من القليل فقط ممّا ورِثه عن الصنف الأعلى (superclass) من توابعَ (method) وحقولٍ (fields)، لتبقى التوابع الأخرى غيرَ مُستخدَمةٍ أو قد يُعاد تعريفها (redefined) مع الكثير من الاختلافات. أسبابها إنشاء علاقة الوراثة (inheritance) ما بين صنفين مختلفين كليًّا بدافع إعادة استخدام الشيفرة الموجودة في الصنف الأعلى (superclass) في الصنف الفرعيّ (subclass). وما الحل؟ إن لم يشترك الصنف الفرعيّ (subclass) مع الصنف الأعلى (superclass) بشيءٍ، فالوراثة غير منطقيّةٍ بالأصل، والأفضلُ التخلي عنها بتبديلها إلى تفويض ...

أسئلة شائعة عن لغة 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).