تعريف الدوال
المعاملات والقيم المعادة
تعريف الدوال درس مجاني في Learn Rust Coding على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn Rust Coding، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.
تعريف دالة
تعرّفون الدالة باستخدام الكلمة المفتاحية fn، واسم، وقوسين، وجسم بين قوسين معقوفين.
تستخدم Rust convention أسلوب snake_case لأسماء الدوال.
fn main() {
greet();
}
fn greet() {
println!("Hello from a function!");
}الدالة main
يبدأ كل برنامج Rust قابل للتنفيذ عند fn main(). وهي نقطة الدخول التي تستدعيها بيئة التشغيل أولًا.
fn main() {
println!("Program starts here");
}المعاملات
يمكن للدوال استقبال معاملات. ويجب أن يعلن كل معامل عن نوعه بعد نقطتين.
fn main() {
print_number(7);
}
fn print_number(x: i32) {
println!("The number is {}", x);
}معاملات متعددة
افصلوا بين المعاملات المتعددة بفواصل. ويحتاج كل معامل إلى تعيين نوع خاص به.
fn main() {
describe("Rust", 2010);
}
fn describe(name: &str, year: i32) {
println!("{} was released in {}", name, year);
}القيم المُعادة
أعلنوا عن نوع القيمة المُعادة بعد سهم ->. وتُعيد الدالة قيمة من ذلك النوع.
يصبح التعبير الأخير (من دون فاصلة منقوطة) هو القيمة المُعادة.
fn main() {
let result = square(5);
println!("square is {}", result);
}
fn square(n: i32) -> i32 {
n * n
}الكلمة المفتاحية return
يمكنكم أيضًا الإعادة مبكرًا باستخدام الكلمة المفتاحية return. ويفيد ذلك في شروط الحماية.
fn main() {
println!("{}", abs_value(-8));
}
fn abs_value(n: i32) -> i32 {
if n < 0 {
return -n;
}
n
}دمج المعاملات والقيم المُعادة
تستقبل الدالة عادةً مدخلات وتنتج مخرجًا. نضيف هنا عددين.
fn main() {
let total = add(3, 4);
println!("total {}", total);
}
fn add(a: i32, b: i32) -> i32 {
a + b
}استدعاء الدوال لدوال أخرى
يمكن للدوال استدعاء دوال أخرى، مما يتيح لكم بناء سلوك أكبر من أجزاء صغيرة قابلة لإعادة الاستخدام.
fn main() {
println!("{}", double_then_add(5));
}
fn double(n: i32) -> i32 { n * 2 }
fn double_then_add(n: i32) -> i32 {
double(n) + 1
}إعادة أنواع أخرى
يمكن للدوال إعادة أي نوع: السلاسل النصية والقيم المنطقية والصفوف وغير ذلك.
fn main() {
let (sum, product) = compute(3, 4);
println!("sum {} product {}", sum, product);
}
fn compute(a: i32, b: i32) -> (i32, i32) {
(a + b, a * b)
}دوال من دون قيمة مُعادة
تعيد الدالة التي لا تحتوي على سهم نوع الوحدة (). وتنجز عملها من خلال تأثيرات جانبية مثل الطباعة.
fn main() {
log_message("saving file");
}
fn log_message(msg: &str) {
println!("[LOG] {}", msg);
}الترتيب لا يهم
بخلاف بعض اللغات، يمكنكم في Rust استدعاء دالة معرّفة لاحقًا في الملف. إذ يرى المترجم جميع الدوال قبل التشغيل.
fn main() {
println!("{}", helper());
}
fn helper() -> i32 {
99
}تحقق سريع
استرجعوا كيفية إعادة دوال Rust للقيم.
مراجعة
الدوال في Rust:
- تُعرّف باستخدام
fn name(params) -> ReturnType { ... }. - تحتاج المعاملات إلى أنواع صريحة.
- يكون التعبير الأخير (من دون فاصلة منقوطة) هو القيمة المُعادة، أو يمكن استخدام
returnللإعادة مبكرًا. - يعني عدم تحديد نوع للإعادة أن الدالة تعيد
().
fn main() {
let area = rectangle_area(4, 6);
println!("area {}", area);
}
fn rectangle_area(w: i32, h: i32) -> i32 {
w * h
}الأسئلة الشائعة
هل درس «تعريف الدوال» مجاني؟
نعم — نص درس «تعريف الدوال» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn Rust Coding، انتقل إلى CoddyKit PRO. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.
ماذا ستتعلم في «تعريف الدوال»؟
المعاملات والقيم المعادة تتمرن على Learn Rust Coding مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn Rust Coding؟
لا تُشترط خبرة سابقة. Learn Rust Coding على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «تعريف الدوال»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn Rust Coding هذا؟
نعم. كل درس في Learn Rust Coding يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تعريف الدوال
- التعبيرات والتعليمات
- الإغلاقات
- Fn وFnMut وFnOnce