الدالة unsafeCast()‎ للتحويل غير الآمن بين الأنواع في لغة Kotlin

من موسوعة حسوب
< Kotlin
مراجعة 16:33، 9 مايو 2018 بواسطة محمد-بغات (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة unsafeCast()‎ للتحويل غير الآمن بين الأنواع في لغة Kotlin}}</noinclude> يحوِّل المعا...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

يحوِّل المعامل as الكائن الذي استُدعي عبره إلى نوعٍ  آخر (T) بشكل غير آمن (unsafe)، أي بدون التحقق من الأنواع، فإن  كان التحويل غير جائزٍ، فسيُعلِم المُترجم بوجود خطأ، ويعبِّر المعامل as عن استدعاء الدالة unsafeCast()‎ التي تقوم بالتحويل الفعليّ.

البنية العامة

inline fun <T> Any?.unsafeCast(): T

يُلاحَظ وجود الكلمة المفتاحية inline للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع توثيق الدوال المباشرة (inline functions).

القيم المعادة

قيمة الكائن بعد تحويله إلى  النوع الآخر المُحدَّد (T).

أمثلة

استخدام المعامل as للتحويل غير الآمن لسلسلة نصية

تعرّف الشيفرة الآتية متغيرًا باسم x من النوع Int، ثم تستخدم معامل التحويل غير الآمن as لتحويله إلى سلسلة نصية (string)، ولما كان ذلك غير جائز، فسيُعلِم المُترجم بوجود خطأ:

fun main(args: Array<String>) {

    val x:Int = 5

    val y: String? = x as String?  // error

}

ويُلاحظ وجود المعامل ? عند النوع String للدلالة على أنّه nullable.

استخدام المعامل as?‎ للتحويل الآمن لسلسلة نصية

تعرّف الشيفرة الآتية متغيرًا باسم x من النوع Int، ثم تستخدم معامل التحويل الآمن as?‎ لتحويله إلى سلسلة نصية (string)، ولما كان ذلك غير جائز، فستُعيد القيمة null لذلك المتغير:

fun main(args: Array<String>) {

   val x:Int = 5

   val y: String? = x as? String?    

   print(x)   // null

}

اقتراح

انظر أيضًا

مصادر

  • الدالة unsafeCast()‎ للتحويل غير الآمن في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin