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

من موسوعة حسوب
ط نقل عبد اللطيف ايمش صفحة Kotlin/js/unsafeCast إلى Kotlin/unsafeCast
مراجعة
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة unsafeCast()‎ للتحويل غير الآمن بين الأنواع في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة unsafeCast()‎ للتحويل غير الآمن بين الأنواع في لغة Kotlin}}</noinclude>
يحوِّل المعامل <code>as</code> الكائن الذي استُدعي عبره إلى نوعٍ  آخر (<code>T</code>) بشكل غير آمن (unsafe)، أي بدون التحقق من الأنواع، فإن  كان التحويل غير جائزٍ، فسيُعلِم المُترجم بوجود خطأ، ويعبِّر المعامل <code>as</code> عن استدعاء الدالة <code>unsafeCast()‎</code> التي تقوم بالتحويل الفعليّ.
يحوِّل المعامل <code>[[Kotlin/typecasts|as]]</code> الكائن الذي استُدعي عبره إلى نوعٍ  آخر (<code>T</code>) بشكلٍ غير آمن (unsafe) أي بدون التحقُّق من الأنواع، فإن  كان التحويل غير جائزٍ، فسيُعلِم المُترجم بوجود خطأٍ، ويعبِّر المعامل <code>[[Kotlin/typecasts|as]]</code> عن استدعاء الدالة <code>unsafeCast()‎</code> التي تقوم بالتحويل الفعليّ.


== البنية العامة ==
== البنية العامة ==
سطر 8: سطر 8:


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


== أمثلة ==
== أمثلة ==


=== استخدام المعامل <code>as</code> للتحويل غير الآمن لسلسلة نصية ===
=== استخدام المعامل <code>as</code> للتحويل غير الآمن (unsafe) لسلسلة نصية (string) ===
تعرّف الشيفرة الآتية متغيرًا باسم <code>x</code> من النوع <code>Int</code>، ثم تستخدم معامل التحويل غير الآمن <code>as</code> لتحويله إلى سلسلة نصية (string)، ولما كان ذلك غير جائز، فسيُعلِم المُترجم بوجود خطأ:<syntaxhighlight lang="kotlin">
تعرّف الشيفرة الآتية متغيرًا باسم <code>x</code> من النوع <code>Int</code>، ثم تستخدم معامل التحويل غير الآمن <code>as</code> لتحويل هذا المتغيّر إلى سلسلةٍ نصيّة (string)، ولمّا كان ذلك غير جائزٍ فسيُعلِم المُترجم بوجود خطأ:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
    val x:Int = 5
    val x:Int = 5
سطر 20: سطر 20:
</syntaxhighlight>
</syntaxhighlight>


ويُلاحظ وجود المعامل <code>?</code> عند النوع <code>String</code> للدلالة على أنّه [[Kotlin/null safety|nullable]].
ويُلاحَظ وجود المعامل <code>?</code> عند النوع <code>String</code> للدلالة على أنّه [[Kotlin/null safety|nullable]].


=== استخدام المعامل <code>as?</code>‎ للتحويل الآمن لسلسلة نصية ===
=== استخدام المعامل <code>as?</code>‎ للتحويل الآمن (safe) لسلسلة نصية (string) ===
تعرّف الشيفرة الآتية متغيرًا باسم x من النوع <code>Int</code>، ثم تستخدم معامل التحويل الآمن <code>as?‎</code> لتحويله إلى سلسلة نصية (string)، ولما كان ذلك غير جائز، فستُعيد القيمة <code>null</code> لذلك المتغير:<syntaxhighlight lang="kotlin">
تعرّف الشيفرة الآتية متغيرًا باسم <code>x</code> من النوع <code>Int</code>، ثم تستخدم معامل التحويل الآمن <code>as?‎</code> لتحويل هذا المتغيّر إلى سلسلة نصيّة (string)، ولمّا كان ذلك غير جائزٍ فستُعيد القيمة <code>null</code> لذلك المتغير:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
   val x:Int = 5
   val x:Int = 5
    val y: String? = x as? String?    
    val y: String? = x as? String?    
 
  print(y)   // null
   print(x)   // null
}
}
</syntaxhighlight>
</syntaxhighlight>


== انظر أيضًا ==
== انظر أيضًا ==
* [[Kotlin/typecasts|التحقق من الأنواع (Type Check) والتحويل بينها (Casting) في لغة Kotlin]]
* [[Kotlin/typecasts|التحقُّق من الأنواع (type check) والتحويل بينها (casting) في لغة Kotlin]]
* [[Kotlin/null safety|أمان القيم الفارغة (Null) في لغة Kotlin]]
* [[Kotlin/null safety|أمان القيم الفارغة (null) في لغة Kotlin]]
* [[Kotlin/basic types|أنواع البيانات (Data Types) في لغة Kotlin]]
* [[Kotlin/basic types|أنواع البيانات (data types) في لغة Kotlin]]


== مصادر ==
== مصادر ==
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/unsafe-cast.html الدالة unsafeCast()‎ للتحويل غير الآمن في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin]
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/unsafe-cast.html الدالة unsafeCast()‎ للتحويل غير الآمن في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Function]]

مراجعة 22:29، 29 مايو 2018

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

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

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

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

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

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

أمثلة

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

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

fun main(args: Array<String>) {
    val x:Int = 5
    val y: String? = x as String?  // error
}

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

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

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

fun main(args: Array<String>) {
   val x:Int = 5
   val y: String? = x as? String?    
   print(y)   // null
}

انظر أيضًا

مصادر