دوال الامتداد: الصياغة وقواعد الإرسال
اكتب دوال امتداد وتعرّف على دلالات الإرسال الساكن.
دوال الامتداد: الصياغة وقواعد الإرسال درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ما دوال الامتداد؟
البنية الأساسية لصياغة دالة الامتداد
fun String.shout(): String = uppercase() + "!"
println("hello".shout()) // HELLO!
fun Int.isEven() = this % 2 == 0
println(4.isEven()) // truethis في الامتدادات
fun List<Int>.secondOrNull(): Int? {
return if (size >= 2) this[1] else null
}
println(listOf(10, 20, 30).secondOrNull()) // 20
println(listOf(5).secondOrNull()) // nullالتوزيع الساكن: الامتدادات لا تتجاوز الدوال
open class Base
class Child : Base()
fun Base.greet() = "Hello from Base"
fun Child.greet() = "Hello from Child"
val obj: Base = Child()
println(obj.greet()) // "Hello from Base" (static dispatch!)الامتدادات مقابل دوال الأعضاء
class Greeter {
fun hello() = "member hello"
}
fun Greeter.hello() = "extension hello" // shadowed!
println(Greeter().hello()) // "member hello"امتدادات المستقبل القابل للقيمة null
fun String?.orEmpty() = this ?: ""
fun Any?.toStringSafe() = this?.toString() ?: "null"
println(null.orEmpty()) // ""
println(42.toStringSafe()) // "42"الرؤية والنطاق
// Top-level extension:
fun List<String>.joinUppercase() = joinToString { it.uppercase() }
// Private to file:
private fun String.clean() = trim().lowercase()امتدادات الكائن المرافق
class User(val name: String) {
companion object
}
fun User.Companion.guest() = User("Guest")
val guest = User.guest()الامتدادات على أنواع المكتبة القياسية
fun Double.roundTo(decimals: Int): Double {
val factor = Math.pow(10.0, decimals.toDouble())
return Math.round(this * factor) / factor
}
println(3.14159.roundTo(2)) // 3.14تنظيم الامتدادات
// StringExtensions.kt
fun String.titleCase() = split(" ")
.joinToString(" ") {
it.replaceFirstChar { c -> c.uppercase() }
}
println("hello world".titleCase()) // Hello Worldلا تستطيع الامتدادات الوصول إلى الأعضاء الخاصة
class Secret {
private val key = "hidden"
val name = "public"
}
fun Secret.reveal() {
println(name) // OK
// println(key) // Error: key is private
}تحقق سريع
مراجعة
الأسئلة الشائعة
هل درس «دوال الامتداد: الصياغة وقواعد الإرسال» مجاني؟
نعم — نص درس «دوال الامتداد: الصياغة وقواعد الإرسال» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- دوال الامتداد: الصياغة وقواعد الإرسال
- خصائص الامتداد والامتدادات المحسوبة
- الامتدادات ذات النطاق وامتدادات companion
- امتدادات عملية: مساعدات Context وView وString