الفرق بين المراجعتين ل"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
الذي استُدعيت عبره، كما سُمّيت أُثناء تعريف ذلك الكائن.