الفرق بين المراجعتين لصفحة: «Kotlin/unsafeCast»
ط نقل عبد اللطيف ايمش صفحة Kotlin/js/unsafeCast إلى Kotlin/unsafeCast |
جميل-بيلوني (نقاش | مساهمات) طلا ملخص تعديل |
||
(مراجعتان متوسطتان بواسطة مستخدمين اثنين آخرين غير معروضتين) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: الدالة | <noinclude>{{DISPLAYTITLE: الدالة <code>unsafeCast()</code> للتحويل غير الآمن بين الأنواع في Kotlin}}</noinclude> | ||
يحوِّل المعامل <code>as</code> الكائن الذي استُدعي عبره إلى نوعٍ آخر (<code>T</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> للتحويل غير الآمن (unsafe) لسلسلة نصية (string):''' | |||
تعرّف الشيفرة الآتية متغيرًا باسم <code>x</code> من النوع <code>Int</code>، ثم تستخدم معامل التحويل غير الآمن <code>as</code> لتحويل هذا المتغيّر إلى سلسلةٍ نصيّة (string)، ولمّا كان ذلك غير جائزٍ فسيُعلِم المُترجم بوجود خطأ:<syntaxhighlight lang="kotlin"> | |||
تعرّف الشيفرة الآتية متغيرًا باسم <code>x</code> من النوع <code>Int</code>، ثم تستخدم معامل التحويل غير الآمن <code>as</code> | |||
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>as?</code> للتحويل الآمن (safe) لسلسلة نصية (string):''' | |||
تعرّف الشيفرة الآتية متغيرًا باسم x من النوع <code>Int</code>، ثم تستخدم معامل التحويل الآمن <code>as?</code> | |||
تعرّف الشيفرة الآتية متغيرًا باسم <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 | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== انظر أيضًا == | == انظر أيضًا == | ||
* [[Kotlin/typecasts| | * [[Kotlin/typecasts|التحقُّق من الأنواع (type check) والتحويل بينها (casting) في Kotlin]]. | ||
* [[Kotlin/null safety|أمان القيم الفارغة ( | * [[Kotlin/null safety|أمان القيم الفارغة (null) في Kotlin]]. | ||
* [[Kotlin/basic types|أنواع البيانات ( | * [[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 | [[تصنيف:Kotlin Function]] | ||
[[تصنيف:Kotlin JS]] |
المراجعة الحالية بتاريخ 05:46، 8 سبتمبر 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
}
انظر أيضًا
- التحقُّق من الأنواع (type check) والتحويل بينها (casting) في Kotlin.
- أمان القيم الفارغة (null) في Kotlin.
- أنواع البيانات (data types) في Kotlin.