الدوال
fn gcd(a: u32, b: u32) -> u32 { if b > 0 { gcd(b, a % b) } else { a } } fn main() { println!("gcd: {}", gcd(143, 52)); }
This slide should take about 3 minutes.
- معلمات التصريح (Declaration parameters) يتبعها نوع (type) (عكس بعض لغات البرمجة)، ثم نوع الإرجاع (return type).
- آخر تعبير في جسم الدالة (function body) (أو أي كتلة) يصبح قيمة الإرجاع (return value). ببساطة احذف
;
في نهاية التعبير. يمكن استخدام الكلمة المفتاحيةreturn
للإرجاع المبكر (early return)، ولكن الشكل "bare value" هو الشكل الاصطلاحي في نهاية الدالة (refactorgcd
to use areturn
) قم بتغيير 'gcd' و استخدم 'return'. - بعض الدوال ليس لها قيمة إرجاع، وتعيد 'unit type'،
()
. سيستنتج المترجم (compiler) هذا إذا تم حذف نوع الإرجاع-> ()
. - التحميل الزائد (Overloading) غير مدعوم -- كل دالة لها تنفيذ واحد فقط.
- دائمًا تأخذ عددًا ثابتًا من المعلمات (parameters). المعلمات الافتراضية (Default arguments) غير مدعومة. يمكن استخدام الماكروز (Macros) لدعم الدوال المتغيرة (variadic functions).
- دائمًا تأخذ مجموعة واحدة من أنواع المعلمات (parameter types). يمكن أن تكون هذه الأنواع عامة (generic)، والتي سيتم تغطيتها لاحقًا.