الفرق بين المراجعتين لصفحة: «Kotlin/Enum/clone»
لا ملخص تعديل |
لا ملخص تعديل |
||
| سطر 8: | سطر 8: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== أمثلة == | == أمثلة == | ||
في الشيفرة الآتية ننشئ صنفًا من النوع <code>Enum</code> باسم <code>ColorEnum</code> مكونًا من أربعة ثوابت <code> | في الشيفرة الآتية ننشئ صنفًا من النوع <code>Enum</code> باسم <code>ColorEnum</code> مكونًا من أربعة ثوابت <code>Red</code> و <code>Blue</code> و <code>Green</code> و <code>Orange</code>، ثم ننشئ متغيرًا <code>x</code> يحتوي القيمة <code>RED</code> للصنف <code>ColorEnum</code>، ثم نستدعي الدالة <code>equals()</code>عبر <code>x</code> ، وكنتيجة لذلك سيطلق المُصرّف استثناء:<syntaxhighlight lang="kotlin"> | ||
fun main(args: Array<String>) { | fun main(args: Array<String>) { | ||
val x = ColorEnum.Red | val x = ColorEnum.Red | ||
مراجعة 10:21، 4 يوليو 2018
يطلق التابع clone() استثناءً (exception) لأنّ ثوابت enum لا يمكن أن تُنسخ. هذا التابع يمنع الأصناف من النوع Enum من أن ترِث من الصنف Cloneable.
البنية العامة
protected fun clone(): Any
أمثلة
في الشيفرة الآتية ننشئ صنفًا من النوع Enum باسم ColorEnum مكونًا من أربعة ثوابت Red و Blue و Green و Orange، ثم ننشئ متغيرًا x يحتوي القيمة RED للصنف ColorEnum، ثم نستدعي الدالة equals()عبر x ، وكنتيجة لذلك سيطلق المُصرّف استثناء:
fun main(args: Array<String>) {
val x = ColorEnum.Red
val y = x.clone() // Error:(3, 14) Cannot access 'clone': it is protected in 'ColorEnum'
}
enum class ColorEnum(val colorCode: Int)
{
Red(2),
Blue(11212),
Green(21212),
Orange(212121)
}
انظر أيضًا
- الخاصيّة
ordinal: تعيد ترتيب مُركّبة الكائنenumالذي استُدعيت عبره، أي ترتيبها في تصريح الكائنenum،بحيث تأخذ المُركّبة الأولى العدد0. - الخاصيّة
name:تعيد اسم مُركّبة الكائنenumالذي استُدعيت عبره، كما سُمّيت أُثناء تعريف ذلك الكائن.