تصريحات التفكيك
فكّكوا القيم إلى متغيرات
تصريحات التفكيك درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
تفكيك الكائنات
قد ترغب أحيانًا في استخراج عدة خصائص من كائن دفعة واحدة.
تتيح لك إعلانات التفكيك في Kotlin إسناد عدة متغيرات من كائن واحد في سطر واحد.
التفكيك الأساسي
ضع الأسماء بين قوسين على يسار =. وتعيّن Kotlin مكوّنات الكائن لهذه الأسماء بالترتيب.
تدعم فئات البيانات ذلك تلقائيًا.
data class User(val name: String, val age: Int)
fun main() {
val user = User("Alice", 30)
val (name, age) = user
println(name)
println(age)
}كيف يعمل
في الخلفية، يستدعي التفكيك الدوال المُولَّدة component1() وcomponent2() وما إلى ذلك.
يرتبط موضع كل متغير بدالة المكوّن المطابقة له.
data class Point(val x: Int, val y: Int)
fun main() {
val p = Point(3, 7)
println(p.component1())
println(p.component2())
}الترتيب مهم
تتم مطابقة المتغيرات حسب الموضع، وليس حسب الاسم.
يحصل المتغير الأول دائمًا على الخاصية الأولى في المُنشئ، بصرف النظر عن الاسم الذي تطلقه عليه.
data class Pair2(val first: Int, val second: Int)
fun main() {
val (a, b) = Pair2(10, 20)
println(a) // first property
println(b) // second property
}تخطي المكوّنات
استخدم الشرطة السفلية _ لتخطي مكوّن لا تحتاج إليه.
يحافظ ذلك على نظافة الشيفرة عندما تكون بعض القيم فقط مهمة.
data class User(val name: String, val age: Int, val city: String)
fun main() {
val (name, _, city) = User("Mia", 28, "Paris")
println(name)
println(city)
}التفكيك في الحلقات
يكون التفكيك مفيدًا جدًا عند التكرار على مجموعات من الكائنات.
يمكنك فك كل عنصر مباشرةً في ترويسة for.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("A", 20), User("B", 25))
for ((name, age) in users) {
println(name + " is " + age)
}
}تفكيك عناصر Map
تدعم Map التفكيك لأن عناصرها توفر مكوّني المفتاح والقيمة.
يجعل ذلك التكرار على Map سهل القراءة جدًا.
fun main() {
val scores = mapOf("Alice" to 90, "Bob" to 85)
for ((name, score) in scores) {
println(name + ": " + score)
}
}إرجاع قيم متعددة
يمكن للدالة إرجاع data class، ويمكن لمستدعيها تفكيك النتيجة.
يُعد ذلك بديلًا نظيفًا لمعاملات الإخراج.
data class MinMax(val min: Int, val max: Int)
fun minMax(nums: List<Int>): MinMax {
return MinMax(nums.min(), nums.max())
}
fun main() {
val (low, high) = minMax(listOf(3, 1, 8, 5))
println(low)
println(high)
}تفكيك Pair وTriple
تدعم المكتبة القياسية Pair وTriple التفكيك أيضًا.
وهما مفيدان لتجميع القيم بسرعة من دون تعريف فئة.
fun main() {
val pair = Pair("x", 1)
val (label, value) = pair
println(label)
println(value)
}تفكيك معاملات Lambda
يمكنك إجراء التفكيك مباشرةً داخل قائمة معاملات lambda.
يشيع ذلك عند تطبيق تحويل على عناصر أو أزواج.
fun main() {
val map = mapOf(1 to "one", 2 to "two")
val text = map.map { (key, value) -> "" + key + "=" + value }
println(text)
}تجميع المفاهيم
يفكك التفكيك الكائنات إلى متغيرات:
- استخدم الأقواس على يسار
= - تتم مطابقة المكوّنات حسب الموضع
- استخدم
_للتخطي - يعمل في الحلقات وlambda وعمليات الإرجاع
data class Result(val ok: Boolean, val message: String)
fun main() {
val (ok, message) = Result(true, "done")
println(ok)
println(message)
}تحقق سريع
اختبر مدى فهمك لتصريحات التفكيك.
مراجعة
لقد تعلمت تصريحات التفكيك:
- تفكك الكائن إلى عدة متغيرات
- تتم المطابقة حسب الموضع عبر
componentN() - يتخطى
_المكوّنات غير المطلوبة - تعمل في الحلقات وMap وlambda وعمليات الإرجاع
بعد ذلك ستستخدم data class داخل مجموعات مثل المجموعات ومخططات Map.
الأسئلة الشائعة
هل درس «تصريحات التفكيك» مجاني؟
نعم — نص درس «تصريحات التفكيك» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ماذا ستتعلم في «تصريحات التفكيك»؟
فكّكوا القيم إلى متغيرات تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟
لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «تصريحات التفكيك»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟
نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تعريف Data Classes
- copy وequals
- تصريحات التفكيك
- Data Classes في المجموعات