Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

قيم إرجاع متعددة

جزء من قسم Fundamentals في رحلة Rust على Coddy — الدرس 52 من 75.

في لغة Rust، يمكن للدالة إرجاع قيم متعددة باستخدام tuple كنوع للإرجاع. الـ tuple هي مجموعة من القيم المختلفة مجمعة في وحدة واحدة.

على سبيل المثال:

fn get_coordinates() -> (i32, i32) {
    let x = 10;
    let y = 20;
    (x, y) // إرجاع tuple
}

وهذه هي طريقة استدعاء الدالة:

let (x, y) = get_coordinates();
// تفكيك الـ tuple
// إلى متغيرات منفصلة

println!("{}, {}", x, y);

يمكنك إرجاع أي عدد تريده من القيم عن طريق إضافة المزيد من العناصر إلى الصف (tuple). على سبيل المثال:

fn get_details() -> (String, i32, f64) {
    let name = String::from("Alice");
    let age = 30;
    let score = 95.5;
    (name, age, score)
    // إرجاع صف (tuple) يحتوي على ثلاث قيم
}

وهذه هي طريقة استدعاء الدالة:

let (name, age, score) = get_details();
println!("{}, {}, {}", name, age, score);
challenge icon

التحدي

سهل

أنشئ دالة باسم get_user_info تعيد صفًا (tuple) يحتوي على اسم المستخدم وعمره وبريده الإلكتروني. يجب أن يكون للدالة التوقيع التالي:

fn get_user_info() -> (String, i32, String)

داخل الدالة، أنشئ المتغيرات التالية:

  • name: من نوع String مهيأ بالقيمة "Bob"
  • age: من نوع i32 مهيأ بالقيمة 25
  • email: من نوع String مهيأ بالقيمة "bob@example.com"

أعد هذه القيم الثلاث كصف (tuple).

في الدالة main، استدعِ get_user_info وقم بتفكيك الصف المعاد إلى متغيرات منفصلة تسمى name و age و email. بعد ذلك، اطبع هذه القيم على وحدة التحكم باستخدام println! بالتنسيق التالي:

Name: [name], Age: [age], Email: [email]

ورقة مرجعية

يمكن للدوال إرجاع قيم متعددة باستخدام الصفوف (tuples) كنوع للإرجاع:

fn get_coordinates() -> (i32, i32) {
    let x = 10;
    let y = 20;
    (x, y) // إرجاع صف (tuple)
}

استدعِ الدالة وقم بتفكيك الصف (tuple) إلى متغيرات منفصلة:

let (x, y) = get_coordinates();
println!("{}, {}", x, y);

يمكنك إرجاع قيم متعددة من أنواع مختلفة:

fn get_details() -> (String, i32, f64) {
    let name = String::from("Alice");
    let age = 30;
    let score = 95.5;
    (name, age, score)
}
let (name, age, score) = get_details();
println!("{}, {}, {}", name, age, score);

جرّب بنفسك

fn get_user_info() -> (String, i32, String) {
    // أنشئ متغيرات الاسم والعمر والبريد الإلكتروني هنا
    
    
    // أرجع الصف (tuple)
    
}

fn main() {
    // استدعِ get_user_info وقم بتفكيك الصف المرجع
    
    
    // اطبع القيم
    
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals