الدوال والفئات العامة
اجعلوا الأنواع معاملات
الدوال والفئات العامة درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ما المقصود بالأنواع العامة؟
تتيح لك الأنواع العامة كتابة تعليمات برمجية تعمل مع أنواع متعددة مع الحفاظ على أمان الأنواع بالكامل. فبدلًا من تثبيت نوع محدد، تستخدم معامل نوع، وغالبًا ما يكون T، كعنصر نائب.
دالة عامة
تُعلن الدالة العامة معامل نوعها بين قوسين زاويين قبل اسم الدالة. ويمكن أن يمثل T هنا أي نوع.
fun <T> identity(value: T): T {
return value
}
fun main() {
println(identity(42))
println(identity("hello"))
}استنتاج النوع
نادرًا ما تحتاج إلى تحديد النوع صراحةً؛ إذ يستنتج المصرّف T من الوسائط. ومع ذلك، يمكنك كتابته عند الحاجة بالشكل identity<Int>(42).
fun <T> firstOf(a: T, b: T): T = a
fun main() {
val x = firstOf(10, 20)
val y = firstOf("a", "b")
println("$x $y")
}معاملات أنواع متعددة
يمكن أن تحتوي الدالة على عدة معاملات للأنواع، وهو أمر مفيد عند العمل مع زوج من الأنواع غير المرتبطة.
fun <A, B> makePair(first: A, second: B): Pair<A, B> {
return Pair(first, second)
}
fun main() {
val p = makePair("age", 30)
println(p)
}فئة عامة
يمكن أن تكون الفئات عامة أيضًا. ويُعلن معامل النوع بعد اسم الفئة، ويمكن استخدامه للخصائص والدوال.
class Box<T>(val value: T) {
fun get(): T = value
}
fun main() {
val intBox = Box(123)
val strBox = Box("Kotlin")
println(intBox.get())
println(strBox.get())
}فئة عامة ذات سلوك
يمكن للفئات العامة الاحتفاظ بحالة قابلة للتغيير والعمل على معامل النوع، مثل حاوية بسيطة.
class Stack<T> {
private val items = mutableListOf<T>()
fun push(item: T) { items.add(item) }
fun pop(): T = items.removeAt(items.size - 1)
fun isEmpty() = items.isEmpty()
}
fun main() {
val stack = Stack<Int>()
stack.push(1)
stack.push(2)
println(stack.pop())
}واجهات عامة
يمكن للواجهات أن تعلن معاملات أنواع أيضًا، مما يتيح للتنفيذات اختيار النوع المحدد.
interface Container<T> {
fun item(): T
}
class StringContainer : Container<String> {
override fun item(): String = "fixed"
}
fun main() {
println(StringContainer().item())
}لماذا لا نستخدم Any فحسب؟
يمكنك تخزين القيم باعتبارها Any، لكنك ستفقد معلومات النوع وستحتاج إلى تحويلات للأنواع. تحافظ الأنواع العامة على النوع الدقيق، فيكتشف المصرّف الأخطاء ولا تكون هناك حاجة إلى التحويلات.
fun main() {
val box: Box<String> = Box("text")
val s: String = box.get()
println(s.uppercase())
}
class Box<T>(val value: T) { fun get(): T = value }دوال التوسعة العامة
يمكن أن تكون دوال التوسعة عامة، مما يتيح إنشاء أدوات قابلة لإعادة الاستخدام مع جميع الأنواع.
fun <T> T.printAndReturn(): T {
println("Value: $this")
return this
}
fun main() {
val x = 5.printAndReturn()
"hi".printAndReturn()
println(x)
}اصطلاحات التسمية
وفقًا للاصطلاح، تُستخدم الأحرف الكبيرة المفردة لتسمية معاملات الأنواع: T لنوع عام، وE لعنصر، وK وV لمفاتيح القاموس وقيمه، وR لنتيجة.
الأنواع العامة في كل مكان
تعتمد مكتبة Kotlin القياسية على الأنواع العامة: List<T> وMap<K, V> وPair<A, B>. ويساعدك فهم الأنواع العامة على قراءة هذه الأنواع واستخدامها بثقة.
تحقق سريع
ما الفائدة الأساسية للأنواع العامة مقارنةً باستخدام Any؟
مراجعة
تستخدم الأنواع العامة معاملات أنواع مثل T لكتابة دوال وفئات وواجهات قابلة لإعادة الاستخدام وآمنة الأنواع. ويستنتج المصرّف الأنواع ويفرض أمانها، مما يلغي الحاجة إلى التحويلات. بعد ذلك ستتحكم في علاقة الأنواع العامة ببعضها باستخدام التباين على مستوى التصريح مع in وout.
تعلم Kotlin مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 51
- الدروس
- 203
الأسئلة الشائعة
هل درس «الدوال والفئات العامة» مجاني؟
نعم — نص درس «الدوال والفئات العامة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الدوال والفئات العامة
- التباين في موضع التصريح
- التباين في موضع الاستخدام
- قيود الأنواع العامة