0Pricing
Kotlin Academy · درس

أسماء الأنواع المستعارة

سمّوا الأنواع المعقدة

أسماء الأنواع المستعارة درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

ما الاسم المستعار للنوع؟

يمنح الاسم المستعار للنوع نوعًا موجودًا اسمًا جديدًا. ولا ينشئ نوعًا جديدًا — بل هو مجرد أداة لتحسين قابلية القراءة، ويُحسم في وقت الترجمة.

تعرّفه باستخدام الكلمة المفتاحية typealias.

typealias Name = String

fun main() {
    val n: Name = "Alice"
    println(n)
}

تسمية أنواع الدوال

قد تكون أنواع الدوال مطولة. ويجعل الاسم المستعار توقيعاتها أسهل بكثير في القراءة.

typealias Handler = (String) -> Unit

fun register(h: Handler) {
    h("event fired")
}

fun main() {
    register { msg -> println(msg) }
}

تسمية الأنواع العامة

تُقرأ الأنواع العامة المتداخلة بعمق، مثل Map<String, List<Int>>، بصورة أفضل عند استخدام اسم مستعار.

typealias ScoreBoard = Map<String, List<Int>>

fun main() {
    val board: ScoreBoard = mapOf("team1" to listOf(10, 20))
    println(board)
}

الأسماء المستعارة شفافة

لأن الاسم المستعار هو النوع نفسه، تكون القيم قابلة للتبادل بالكامل. ويمكن استخدام Name وString معًا بحرية من دون تحويل.

typealias Name = String

fun shout(s: String) = s.uppercase()

fun main() {
    val n: Name = "bob"
    println(shout(n))
}

الأسماء المستعارة ذات المعاملات

يمكن أن يكون للاسم المستعار لنوع ما معاملاته النوعية الخاصة، ويمررها إلى النوع الأساسي.

typealias Pairs<T> = List<Pair<T, T>>

fun main() {
    val data: Pairs<Int> = listOf(1 to 2, 3 to 4)
    println(data)
}

إسناد أسماء مستعارة للفئات المتداخلة

يمكن منح مسار فئة متداخلة أو داخلية طويل اسمًا مستعارًا قصيرًا، مما يقلل ضوضاء الاستيراد والفوضى.

class Outer {
    class Inner {
        fun hello() = "inner hello"
    }
}

typealias Shortcut = Outer.Inner

fun main() {
    println(Shortcut().hello())
}

تحسين قابلية قراءة المجال

توضح الأسماء المستعارة القصد. توثق typealias UserId = Int أن العدد الصحيح يمثل هوية مستخدم، رغم أن المترجم لا يزال يعامله كنوع Int.

typealias UserId = Int
typealias Email = String

fun notify(id: UserId, to: Email) {
    println("Notify user " + id + " at " + to)
}

fun main() {
    notify(42, "a@b.com")
}

لا يضيف أمانًا نوعيًا

انتبه: لأن الأسماء المستعارة شفافة، فلن يمنعك المترجم من تمرير UserId حيث يُتوقع اسم مستعار مختلف للنوع Int. فهي توثيق وليست آلية فرض.

typealias UserId = Int
typealias OrderId = Int

fun process(order: OrderId) = println("order " + order)

fun main() {
    val user: UserId = 5
    process(user) // compiles fine — both are Int
}

على المستوى الأعلى فقط

يجب تعريف الأسماء المستعارة للأنواع في المستوى الأعلى من الملف. ولا يمكنك تعريفها داخل الدوال أو الفئات. ضعها بالقرب من التعليمات البرمجية ذات الصلة أو في ملف مخصص.

typealias Callback = () -> Unit

fun run(cb: Callback) = cb()

fun main() {
    run { println("done") }
}

متى تستخدم الأسماء المستعارة؟

استخدم الأسماء المستعارة للأنواع عندما:

  • يكون نوع دالة أو نوع عام طويلًا ومتكررًا
  • تريد أسماء توضح ذاتيًا الغرض من الأنواع البدائية
  • تحتاج إلى اسم مختصر لنوع متداخل

عندما تحتاج إلى أمان نوعي حقيقي، استخدم فئة قيمة بدلًا من ذلك.

الاسم المستعار مقابل فئة القيمة

الاسم المستعار هو النوع نفسه مع اسم جديد — ولا يوفر أي أمان. أما فئة القيمة فهي نوع مميز يمنع خلط القيم. يغطي الدرس التالي فئات القيم.

تحقق سريع

اختبر مدى فهمك للأسماء المستعارة للأنواع.

مراجعة

تعلمت الأسماء المستعارة للأنواع:

  • تُعرّف باستخدام typealias في المستوى الأعلى
  • هي مجرد اسم جديد وشفافة بالكامل
  • مفيدة جدًا لأنواع الدوال والأنواع العامة وتحسين قابلية القراءة
  • لا تضيف أي أمان نوعي

التالي: فئات القيم المضمنة للتغليف من دون تكلفة إضافية.

الأسئلة الشائعة

هل درس «أسماء الأنواع المستعارة» مجاني؟

نعم — نص درس «أسماء الأنواع المستعارة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

ماذا ستتعلم في «أسماء الأنواع المستعارة»؟

سمّوا الأنواع المعقدة تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟

لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «أسماء الأنواع المستعارة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟

نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أسماء الأنواع المستعارة
  2. فئات القيم المضمنة
  3. حالات الاستخدام
  4. القيود
← العودة إلى Kotlin Academy