0Pricing
Kotlin Academy · درس

تصريحات التفكيك باستخدام componentN

فكّك مثيلات data class إلى متغيرات باستخدام دوال component.

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

أساسيات التفكيك

يفك تصريح التفكيك كائنًا إلى عدة متغيرات في خطوة واحدة. ويستخدم دوال العامل componentN().

تفكيك فئة بيانات

تنشئ فئات البيانات تلقائيًا component1 وcomponent2 و...، ولذلك يمكنك كتابة val (a, b) = obj.

data class Point(val x: Int, val y: Int)
fun main() {
    val p = Point(3, 5)
    val (x, y) = p
    println("x=$x, y=$y")
}

تفكيك Pair

يدعم نوعا المكتبة القياسية Pair وTriple التفكيك مباشرةً.

fun main() {
    val pair = "Ada" to 35
    val (name, age) = pair
    println("$name is $age")
}

تفكيك Triple

يحتفظ Triple بثلاث قيم؛ فككه إلى ثلاثة متغيرات.

fun main() {
    val rgb = Triple(255, 128, 0)
    val (r, g, b) = rgb
    println("R=$r G=$g B=$b")
}

التفكيك أثناء التكرار على Map

تحتوي إدخالات Map على component1 (المفتاح) وcomponent2 (القيمة). نفّذ التفكيك في رأس حلقة for.

fun main() {
    val ages = mapOf("Alice" to 30, "Bob" to 25)
    for ((name, age) in ages) {
        println("$name -> $age")
    }
}

التفكيك في Lambdas

يمكن لـ Lambdas التي تقبل أزواجًا تفكيك المعاملات مباشرةً.

fun main() {
    val pairs = listOf("a" to 1, "b" to 2, "c" to 3)
    pairs.forEach { (letter, num) -> println("$letter=$num") }
}

تجاهل القيم باستخدام _

استخدم الشرطة السفلية _ لتخطي القيم التي لا تحتاج إليها.

data class User(val name: String, val email: String, val age: Int)
fun main() {
    val u = User("Ada", "ada@example.com", 35)
    val (name, _, age) = u
    println("$name ($age)")
}

إرجاع عدة قيم

يمكن للدالة إرجاع Pair أو فئة بيانات مخصصة؛ ثم يجري المستدعي التفكيك.

data class Result(val sum: Int, val product: Int)
fun computeBoth(a: Int, b: Int) = Result(a + b, a * b)
fun main() {
    val (s, p) = computeBoth(4, 5)
    println("sum=$s product=$p")
}

‏componentN مخصص

يمكن لأي فئة دعم التفكيك من خلال التصريح عن operator fun componentN().

class RGB(val r: Int, val g: Int, val b: Int) {
    operator fun component1() = r
    operator fun component2() = g
    operator fun component3() = b
}
fun main() {
    val (red, green, blue) = RGB(255, 100, 0)
    println("$red $green $blue")
}

التفكيك باستخدام withIndex()

احصل على زوج يتكون من الفهرس والقيمة عند التكرار باستخدام withIndex().

fun main() {
    val fruits = listOf("apple", "banana", "cherry")
    for ((idx, fruit) in fruits.withIndex()) {
        println("$idx: $fruit")
    }
}

قيد: يعتمد على الموضع

يعتمد التفكيك على الموضع، وليس على الاسم. وتؤدي إعادة ترتيب حقول فئة البيانات إلى تغيير المعنى بصمت في مواضع الاستدعاء.

data class Point(val x: Int, val y: Int)
fun main() {
    val p = Point(10, 20)
    val (a, b) = p // a=x, b=y
    // Add a property in the middle and old destructuring shifts!
    println("$a $b")
}

تحقق سريع

أي دالة عامل تتيح تفكيك الخاصية رقم i؟

مراجعة

يستخدم التفكيك دوال العامل componentN(). وتدعمه فئات البيانات وPair وTriple وإدخالات Map مباشرةً. استخدم _ لتخطي القيم، وانتبه: يعتمد التفكيك على الموضع وليس على الاسم.

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

هل درس «تصريحات التفكيك باستخدام componentN» مجاني؟

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

ماذا ستتعلم في «تصريحات التفكيك باستخدام componentN»؟

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

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

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

كم من الوقت يستغرق درس «تصريحات التفكيك باستخدام componentN»؟

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

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

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

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

  1. أساسيات Data Class: الدوال المُنشأة تلقائيًا
  2. النسخ باستخدام copy() والتجاوز الجزئي
  3. تصريحات التفكيك باستخدام componentN
  4. Data Classes في المجموعات ومفاتيح Map
← العودة إلى Kotlin Academy