المعاملان is وas
فحص الأنواع والتحويلات
المعاملان is وas درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
فحص الأنواع وتحويلها
يوفر Kotlin عاملين للتعامل مع الأنواع أثناء التشغيل:
- يفحص
isما إذا كانت القيمة من نوع معين - يحوّل
asقيمةً إلى نوع معين
ولهذين العاملين صيغ آمنة ستتعلمها هنا.
العامل is
يُرجع is قيمة منطقية تخبرك ما إذا كانت القيمة تطابق نوعًا معينًا.
وهو الأساس للتحويلات الذكية.
fun main() {
val x: Any = "hello"
println(x is String)
println(x is Int)
}الفحص المنفي باستخدام !is
استخدم !is للتحقق من أن القيمة ليست من نوع معين.
تُقرأ هذه الصيغة بشكل طبيعي في عبارات الحراسة.
fun main() {
val x: Any = 42
if (x !is String) {
println("not a string")
}
}العامل as
ينفذ as تحويلًا صريحًا. فإذا كانت القيمة من ذلك النوع فعلًا، فستحصل عليها مكتوبةً بالنوع الصحيح.
استخدمه عندما لا يستطيع المترجم استنتاج النوع بنفسه.
fun main() {
val x: Any = "hello"
val s = x as String
println(s.length)
}متى يفشل as
إذا لم تكن القيمة من النوع المستهدف، فإن as يرمي استثناء ClassCastException.
هذه هي الصيغة غير الآمنة، لذا استخدمها فقط عندما تكون متأكدًا.
fun main() {
val x: Any = 42
try {
val s = x as String
println(s)
} catch (e: ClassCastException) {
println("Cannot cast Int to String")
}
}التحويل الآمن as؟
يُعد as? تحويلًا آمنًا. فهو يُرجع القيمة محوّلةً إلى النوع المطلوب، أو null إذا تعذر التحويل.
ولا يُرمى أي استثناء.
fun main() {
val x: Any = 42
val s = x as? String
println(s)
}التحويل الآمن مع Elvis
اجمع بين as? وElvis لتوفير قيمة بديلة عند فشل التحويل.
هذا نمط نظيف لا يتسبب في تعطل البرنامج.
fun main() {
val x: Any = 42
val s = (x as? String) ?: "default"
println(s)
}يقود is التحويلات الذكية
بعد فحص is، لا تحتاج عادةً إلى as إطلاقًا، لأن التحويلات الذكية تبدأ بالعمل.
استخدم as الصريح فقط عندما يتعذر تطبيق التحويل الذكي.
fun main() {
val x: Any = "smart"
if (x is String) {
println(x.uppercase()) // smart cast, no as needed
}
}التحويل في المجموعات
تكون التحويلات الآمنة مفيدة عند تصفية المجموعات المختلطة.
يستخدم filterIsInstance العامل is داخليًا للاحتفاظ بالعناصر المطابقة فقط.
fun main() {
val items: List<Any> = listOf(1, "two", 3, "four")
val strings = items.filterIsInstance<String>()
println(strings)
}اختيار العامل المناسب
إليك دليلًا مبسطًا:
- هل تحتاج إلى قيمة منطقية؟ استخدم
is - هل أنت متأكد من النوع؟ استخدم
as - هل لست متأكدًا؟ استخدم
as?مع قيمة بديلة
fun describe(x: Any): String {
val text = x as? String ?: return "not text"
return "text of length " + text.length
}
fun main() {
println(describe("hello"))
println(describe(99))
}تجميع المفاهيم
تمنحك عوامل الأنواع تحكمًا كاملًا:
- يفحص
isو!isالأنواع - يحوّل
asالنوع، لكنه قد يرمي استثناءً - يحوّل
as?النوع بأمان، ويُرجع null عند الفشل
fun main() {
val values: List<Any> = listOf(1, "hi", 2.5)
for (v in values) {
when {
v is Int -> println("int " + v)
v is String -> println("string " + v)
else -> println("other")
}
}
}تحقق سريع
اختبر مدى فهمك للعاملين is وas.
مراجعة
لقد تعلمت عوامل الأنواع:
- يُستخدم
isو!isلفحص الأنواع - يُستخدم
asللتحويلات التي قد ترمي استثناءً - يُستخدم
as?للتحويلات الآمنة التي تُرجع null
بعد ذلك ستجعل when شاملًا لجميع الحالات لتغطية كل الاحتمالات.
تعلم Kotlin مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 51
- الدروس
- 203
الأسئلة الشائعة
هل درس «المعاملان is وas» مجاني؟
نعم — نص درس «المعاملان is وas» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ماذا ستتعلم في «المعاملان is وas»؟
فحص الأنواع والتحويلات تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟
لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «المعاملان is وas»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟
نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- استخدام when كتعبير
- التحويلات الذكية
- المعاملان is وas
- when الشاملة