دوال المصفوفات
جزء من قسم Fundamentals في رحلة Rust على Coddy — الدرس 61 من 75.
المصفوفات مزودة بالعديد من الميثود (الوظائف). للوصول إلى ميثود، اكتب:
array.methodName(otherParameters)فيما يلي قائمة بالأساليب الأساسية:
len()- يعيد عدد العناصر في المصفوفةcontains(value)- يتحقق مما إذا كانت المصفوفة تحتوي على قيمة محددة
is_empty()- يتحقق مما إذا كانت المصفوفة فارغةreverse()- يعكس المصفوفة
على سبيل المثال:
let numbers = [10, 20, 30, 40, 50];
let length = numbers.len();
println!("Length: {}", length);
numbers.reverse()
// [50, 40, 30, 20, 10]مثال على الدالة is_empty():
let numbers: [i32; 0] = [];
let empty = numbers.is_empty();
println!("Is empty: {}", empty);سيكون الناتج:
Is empty: trueعند استخدام contains، تحتاج إلى تمرير مرجع للقيمة التي تبحث عنها باستخدام &. على سبيل المثال:
let numbers = [10, 20, 30, 40, 50];
let has_thirty = numbers.contains(&30);
println!("Contains 30: {}", has_thirty);
// المخرجات: Contains 30: trueالتحدي
سهلقم بإنشاء دالة باسم analyze_array تستقبل مصفوفة من السلاسل النصية (strings) بحجم 5 كوسيط. يجب أن تقوم الدالة بالعمليات التالية:
- التحقق مما إذا كانت المصفوفة فارغة باستخدام طريقة
is_empty()وطباعة النتيجة. - التحقق مما إذا كانت المصفوفة تحتوي على السلسلة النصية
"5"باستخدام طريقةcontains()وطباعة النتيجة. تذكر استخدام String وليس str:"5".to_string() - عكس ترتيب المصفوفة وطباعتها.
يجب أن يتبع المخرج هذا التنسيق تماماً:
Is empty: [true or false]
Contains 5: [true or false]
Reversed Elements:
[element1]
[element2]
...ورقة مرجعية
تمتلك المصفوفات دوالاً مدمجة يتم الوصول إليها باستخدام تدوين النقطة (dot notation):
array.methodName(otherParameters)دوال المصفوفات الأساسية:
len()- تعيد عدد العناصرcontains(value)- تتحقق مما إذا كانت المصفوفة تحتوي على قيمة محددةis_empty()- تتحقق مما إذا كانت المصفوفة فارغةreverse()- تعكس ترتيب المصفوفة
أمثلة:
let numbers = [10, 20, 30, 40, 50];
let length = numbers.len();
let has_thirty = numbers.contains(&30);
let empty = numbers.is_empty();
numbers.reverse(); // [50, 40, 30, 20, 10]ملاحظة: تتطلب الدالة contains() مرجعاً للقيمة باستخدام &.
جرّب بنفسك
use std::io;
use std::convert::TryInto;
fn analyze_array(arr: &mut [String; 5]) {
// اكتب الكود هنا
// طباعة العناصر سطراً بسطر
for element in arr.iter() {
println!("{}", element);
}
}
fn main() {
let mut input_str_arr = String::new();
io::stdin().read_line(&mut input_str_arr).unwrap();
let mut arr: [String; 5] = input_str_arr.split(',').map(String::from).collect::<Vec<String>>().try_into().unwrap();
analyze_array(&mut arr);
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)اختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص7أساسيات الإدخال والإخراج
الطباعة على الكونسولقراءة مدخلات المستخدممراجعة - حتى 120مراجعة - True أو False13تكملة المصفوفات
مصفوفات المراجع القابلة للتغييردوال المصفوفاتمراجعة - مصفوفة الضربمراجعة - المصفوفة المعكوسةطباعة أفضل2المتغيرات - الجزء الأول
الأرقامالمحارف (Char)النصوص (String)القيم المنطقية (Boolean)المتغيرات القابلة للتغيير5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالث11الدوال
تعريف الدوالالمعاملات والوسائطقيم الإرجاعقيم إرجاع متعددةمراجعة - دالة Sigmaمراجعة - دالة التحقق14التكرار عبر المصفوفات
دليل النطاق (Range)حلقة For المحسنةالاستعارة في الحلقةعمليات المصفوفات الشائعة3المتغيرات - الجزء الثاني
التصريح عن النوعقواعد التسميةاستنتاج النوعمراجعة - تهيئة المتغيراتتحويل الأنواع9الحلقات التكرارية
For عبر السلاسلحلقة Whileجملة Breakجملة Continueالحلقات المتداخلةتسميات الحلقاتالحلقة اللانهائيةمراجعة - الإدخال الديناميكي