0Pricing
Scala for Backend Engineering & Functional Programming · درس

تفكيك Tuples

استخرج القيم مجددًا

تفكيك Tuples درس مجاني في Scala for Backend Engineering & Functional Programming على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Scala for Backend Engineering & Functional Programming، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Scala for Backend Engineering & Functional Programming 4 دروس في المجموع.

استخراج القيم

إنشاء tuple ليس سوى نصف المهمة. ولاستخدام القيم الموجودة داخلها، تحتاج إلى استخراجها.

توفر Scala طريقتين أساسيتين: أدوات الوصول المرقمة والتفكيك باستخدام الأنماط. ويغطي هذا الدرس كلتيهما.

الوصول حسب الموضع

يمتلك كل عنصر في tuple موضعًا يمكنك قراءته باستخدام ._1 و._2 وما إلى ذلك.

لاحظ أن المواضع تبدأ من واحد، لا من الصفر. لذلك فإن ._1 هو العنصر الأول.

val person = ("Alice", 30)
println(person._1)
println(person._2)

استخدام أدوات الوصول في الشيفرة

تكون أدوات الوصول الموضعية مفيدة عندما تحتاج إلى عنصر واحد فقط.

نقرأ هنا العمر من زوج ونضيف إليه واحدًا. وتُرجع أدوات الوصول نوع العنصر الأصلي، لذلك تعمل العمليات الحسابية مباشرة.

val record = ("Bob", 42)
val nextYear = record._2 + 1
println(nextYear)

التفكيك باستخدام val

قد يصعب تتبع قراءة ._1 و._2. يتيح لك التفكيك تسمية كل عنصر دفعة واحدة.

يربط نمط val هذا بين name وage في سطر واحد.

val (name, age) = ("Cara", 25)
println(name)
println(age)

لماذا يفيد التفكيك؟

تكون قراءة المتغيرات المسماة أفضل بكثير من قراءة المواضع المرقمة.

بمقارنة age بـperson._2، يجعل الإصدار المفكك مقصدك واضحًا ويتجنب أخطاء الفرق بمقدار واحد.

val (city, population) = ("Lyon", 500000)
println(s"$city has $population people")

تفكيك ثلاثة عناصر

يعمل التفكيك مع Tuples من أي حجم، وليس مع الأزواج فقط.

هنا تُفكك tuple مكوّنة من ثلاثة عناصر إلى ثلاثة متغيرات مسماة في تعليمة واحدة.

val (id, label, active) = (7, "task", true)
println(id)
println(label)
println(active)

التجاهل باستخدام الشرطة السفلية

قد ترغب أحيانًا في بعض القيم فقط. استخدم الشرطة السفلية _ لتخطي موضع.

نحتفظ هنا بالاسم ونتجاهل العمر تمامًا.

val (name, _) = ("Dana", 40)
println(name)

تفكيك نتائج الدوال

تنسجم الدوال التي تُرجع Tuples طبيعيًا مع التفكيك.

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

def minMax(a: Int, b: Int) = (a min b, a max b)
val (low, high) = minMax(8, 3)
println(low)
println(high)

تبديل زوج

تحتوي tuple ذات العنصرين على method مدمجة باسم swap تعكس ترتيب عنصريها.

ويُرجع ذلك زوجًا جديدًا بترتيب معكوس، وهو أمر مفيد أحيانًا.

val pair = ("a", 1)
println(pair.swap)

التفكيك في for

عند التكرار على مجموعة من الأزواج، يمكنك إجراء التفكيك داخل رأس الحلقة.

تُفكك كل زوج تلقائيًا إلى key وvalue في كل تكرار.

val pairs = List(("a", 1), ("b", 2))
for ((key, value) <- pairs) println(s"$key=$value")

الحفاظ على الأنواع

لا يفقد التفكيك معلومات النوع. إذ يحتفظ كل متغير مسمى بالنوع الدقيق لموضعه.

لذلك ففي val (n, age) = ("Eve", 33) يكون n من النوع String وage من النوع Int، وجاهزين للاستخدام الآمن من حيث النوع.

val (n, age) = ("Eve", 33)
println(n.length)
println(age * 2)

اختبار سريع

اختبر ما تعلّمته عن تفكيك Tuples.

مراجعة

يمكنك استخراج قيم tuple باستخدام أدوات الوصول الموضعية مثل ._1، التي تبدأ من واحد، أو بطريقة أوضح باستخدام التفكيك مثل val (a, b) = pair.

تتخطى الشرطة السفلية المواضع غير المطلوبة، ويعمل التفكيك داخل حلقات for، وتظل الأنواع محفوظة دائمًا. ستستكشف بعد ذلك النطاقات.

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

هل درس «تفكيك Tuples» مجاني؟

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

ماذا ستتعلم في «تفكيك Tuples»؟

استخرج القيم مجددًا تتمرن على Scala for Backend Engineering & Functional Programming مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Scala for Backend Engineering & Functional Programming؟

لا تُشترط خبرة سابقة. Scala for Backend Engineering & Functional Programming على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «تفكيك Tuples»؟

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

هل يمكنني كتابة وتشغيل أكواد في درس Scala for Backend Engineering & Functional Programming هذا؟

نعم. كل درس في Scala for Backend Engineering & Functional Programming يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

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

  1. إنشاء Tuples
  2. تفكيك Tuples
  3. إنشاء النطاقات
  4. النطاقات في الحلقات
← العودة إلى Scala for Backend Engineering & Functional Programming