الفرق بين المراجعتين لصفحة: «Kotlin/Enum/clone»

من موسوعة حسوب
< Kotlin‏ | Enum
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع Enum.clone()‎ في لغة Kotlin}}</noinclude> تبين الدالة <code>clone()</code>‎ إذا ما كان الكائن ا...'
 
لا ملخص تعديل
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع Enum.clone()‎ في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: التابع Enum.clone()‎ في لغة Kotlin}}</noinclude>
تبين الدالة <code>clone()</code>‎ إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعيت عبره. وأيُّ تعريف لاستخدام هذه الدالة يجب أن يكون:
يطلق التابع <code>clone()</code>‎ استثناءً (exception) لأنّ ثوابت enum  لا يمكن أن تُنسخ. هذا التابع يمنع الأصناف من النوع <code>[[Kotlin/Enum/index|Enum]]</code> من أن ترِث من الصنف <code>Cloneable</code>.


== البنية العامة ==
== البنية العامة ==
<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
fun equals(other: Any?): Boolean
protected fun clone(): Any


</syntaxhighlight>
</syntaxhighlight>
== القيم المعادة ==
القيمة المنطقية <code>true</code> إن كان الكائن المُمرّر للدالة يساوي الكائن الذي استدعيت عبره، أو <code>false</code> خلاف ذلك.
== أمثلة ==
== أمثلة ==
في الشيفرة الآتية ننشئ صنفين من النوع <code>Enum</code> باسم <code>ColorEnum</code> و <code>ColorEnum2</code> مكونين من أربعة مركّبات  <code>RED</code>  و <code>BLUE</code>  و <code>GREEN</code>  و <code>ORANGE</code>، ثم ننشئ متغيرين <code>x</code> و <code>y</code> يحتويان القيمة <code>RED</code> لكلا  الصنفين، ثم نستدعي الدالة <code>equals()</code>‎عبر <code>x</code> و <code>y</code> ثم نطبع الناتج:<syntaxhighlight lang="kotlin">
في الشيفرة الآتية ننشئ صنفًا من النوع <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
     val y = ColorEnum2.Red
     val y = x.clone() // Error:(3, 14) Cannot access 'clone': it is protected in 'ColorEnum'
   
    print(x.equals(y)) // false
    print(x.equals(x)) // true
 
}
}


سطر 29: سطر 22:
  }
  }


enum class ColorEnum2(val colorCode: Int)
{
    Red(2),
    Blue(11212),
    Green(21212),
    Orange(212121)
}
</syntaxhighlight>
</syntaxhighlight>


سطر 43: سطر 29:


== مصادر ==
== مصادر ==
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-enum/equals.html صفحة الدالة clone.equals()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-enum/clone.html صفحة الدالة clone.equals()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Method]]
[[تصنيف:Kotlin Method]]

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

مصادر