وظائف روست لها العديد من الفروق الدقيقة التي تختلف عن اللغات الأخرى. تعلم كل شيء عن تركيبهم هنا.
الوظائف هي بنيات برمجة أساسية لأنها تضع الأساس لقابلية إعادة استخدام الكود وتسهل البرمجة المعيارية. الوظائف عبارة عن كتل من التعليمات البرمجية قائمة بذاتها تؤدي مهامًا محددة. يمكنهم تلقي المدخلات ، في شكل وسيطات ، وإرجاع قيمة.
يوفر Rust وظائف لتنظيم الكود والتغليف وإمكانية إعادة استخدام الكود.
تحديد الوظائف في الصدأ
وظائف الصدأ تشبه إلى حد كبير يعمل في أي لغة برمجة أخرى، على الرغم من وجود اختلافات صغيرة ستحتاج إلى فهمها.
ستحدد وظائف برامج Rust باستخدام امتداد الجبهة الوطنية الكلمة الأساسية متبوعة باسم الوظيفة والوسيطات الاختيارية والعودة الاختيارية نوع البيانات.
// دالة لا تأخذ في الوسيطات ولا تُرجع قيمة
fn function_name () {
// وظيفة الجسم هنا
}
إليك دالة Rust بسيطة لا تأخذ أي وسيطات أو ترجع أي قيم.
fn a_function () {
دع x = 3;
println!("{}"، خ)
}
وظيفة هي وظيفة الصدأ البسيطة التي تطبع المتغير x.
تواقيع وظيفة الصدأ
تواقيع الوظائف هي طريقة لتسمية الوظائف ، ووصف وسيطاتها وأنواع الإرجاع ، دون تضمين جسم وظيفي. تواقيع الوظائف مفيدة لتوثيق واجهات برمجة التطبيقات الخاصة بمكتبات الصدأ.
إليك مثال على توقيع وظيفة الصدأ:
اسم الجبهة الوطنية ()
تحية fn (الاسم: & str)
ال اسم الوظيفة هي توقيع بسيط للوظيفة ، بينما تحية يحدد التوقيع أن الوظيفة تأخذ وسيطة واحدة ، اسم، من نوع سلسلة (& شارع).
إعلان الدالات مع الوسيطات وقيم الإرجاع
يمكن أن تأخذ دوال الصدأ العديد من الوسيطات ، ولم يتم تحديد الحد بشكل صريح. تكون الوظائف ذات الوسيطات أكثر مرونة بشكل عام لأنها يمكن أن تأخذ قيمًا من وظائف وأجزاء أخرى من التعليمات البرمجية.
إليك النموذج النموذجي لوظيفة Rust التي تأخذ الحجج:
fn function_name (arg: يكتب، arg2: يكتب) {
// وظيفة الجسم هنا
}
يمكن أن يكون نوع وسيطة الوظيفة من نوع Rust المدمج أو نوع مخصص من برنامجك.
فيما يلي مثال لدالة بسيطة تأخذ عددين صحيحين كوسيطات:
fn add_numbers (x: i32، y: i32) {
println!("{}"، س + ص) ؛
}
ال add_numbers تأخذ الدالة عددين صحيحين 32 بت وتطبع مجموع الأعداد الصحيحة.
يمكن أن ترجع وظائف الصدأ قيمًا متعددة ؛ سيتعين عليك تحديد نوع (أنواع) الإرجاع وإرجاع قيم النوع من الوظيفة.
fn function_name (arg: يكتب، arg2: يكتب) -> (يكتب, يكتب) {
// وظيفة الجسم هنا
يعود arg، arg2
}
إليك دالة تأخذ سلسلة وعددًا صحيحًا من 32 بت كوسيطة وتعيد الوسيطات في صورة tuple.
fn string_and_integer (s: String، n: i32) -> (String، i32) {
يعود (ق ، ن) ؛
}
ال سلسلة_و_ صحيح تأخذ الدالة سلسلة وعددًا صحيحًا من 32 بت ، وتعيدهما في صورة tuple. يمكنك فقط إرجاع قيمة واحدة من دالة Rust.
يمكنك ترك ملف يعود الكلمة الأساسية عند إرجاع التعبير النهائي من وظيفة ، لجعل الكود أكثر إيجازًا.
fn string_and_integer (s: String، n: i32) -> (String، i32) {
يعود (ق ، ن) ؛
}// الوظائف متكافئة
fn str_and_int (s: String، n: i32) -> (String، i32) {
(ق ، ن)
}
هاتان الوظيفتان لهما نفس السلوك حيث أنهما يأخذان سلسلة وعددًا صحيحًا ويعيدان هذه الوسيطات في شكل مجموعة.
استدعاء وظائف الصدأ
يمكنك استدعاء دالة من أخرى عن طريق كتابة اسمها متبوعًا بالقيم التي تريد تمريرها إليها داخل أقواس:
fn add_numbers (x: i32، y: i32) -> i32 {
س + ص
}
fn main () {
اسمحوا النتيجة = add_numbers (3, 5);
println!("النتيجه هي {}"، نتيجة)؛ // الإخراج: النتيجة هي 8
}
ال رئيسي المكالمات الوظيفية add_numbers، ويمررها إلى رقمين صحيحين. يسند نتيجة الدالة إلى متغير ، نتيجة.
يمكنك تحديد وظائف هياكل الصدأ
يمكنك التصريح عن الوظائف داخل هياكل Rust. تصبح هذه طرقًا للبنية التي يمكنها الوصول إليها وتعديلها.
Rust ليس موجهاً نحو الكائنات بحتة ، ولكنه يوفر بنيات لتجميع البيانات ذات الصلة. يمكنك العمل على تنفيذ مفاهيم OOP في Rust باستخدام الهياكل ذات الأساليب.