قراءة مدخلات المستخدم
جزء من قسم Fundamentals في رحلة Rust على Coddy — الدرس 30 من 75.
حتى الآن، كنا نقوم بإنشاء برامج نكتب فيها القيم مباشرة في الكود الخاص بنا. لكن البرامج الحقيقية غالباً ما تحتاج إلى التفاعل مع المستخدمين والحصول على معلومات منهم.
في لغة Rust، يتم الحصول على المدخلات من المستخدم باستخدام مكتبة std::io. توفر هذه المكتبة طرقاً لقراءة أنواع مختلفة من المدخلات، مثل الأعداد الصحيحة، وأعداد الفاصلة العائمة، والسلاسل النصية.
لاستخدام مكتبة std::io، تحتاج أولاً إلى استيرادها:
use std::io;لقراءة مدخلات من المستخدم، نحتاج إلى سطرين من الكود:
let mut my_var = String::new();
// ينشئ سلسلة نصية فارغة لتخزين المدخلات
io::stdin().read_line(&mut my_var).unwrap();
// يقرأ المدخلاتسيقوم هذا بتخزين قيمة المدخلات في المتغير my_var كنوع سلسلة نصية (string).
إذا كنت ترغب في الحصول على رقم، فأنت بحاجة إلى خطوة إضافية لتحويل النص المدخل إلى رقم:
let age: i32 = input.trim().parse().unwrap();تعد الدالة .trim() ضرورية لأنه عندما يضغط المستخدمون على Enter، يتم إضافة حرف سطر جديد إلى مدخلاتهم. على سبيل المثال، إذا قام شخص ما بكتابة "25" وضغط على Enter، فإن المدخل الفعلي هو "25\n". تقوم .trim() بإزالة أحرف المسافات البيضاء الزائدة هذه (المسافات، والأسطر الجديدة، وما إلى ذلك) من بداية ونهاية المدخلات.
لا تقلق كثيراً بشأن unwrap() في الوقت الحالي - سنتعلم عنه لاحقاً. فقط اعلم أنه يساعدنا في التعامل مع الأخطاء المحتملة بطريقة بسيطة (وإن لم تكن مثالية).
التحدي
مبتدئاكتب برنامجًا يأخذ مدخلات من المستخدم (اسمه)، ثم يخرج Hello, متبوعًا بالاسم الذي أدخله المستخدم وعلامة تعجب.
على سبيل المثال، إذا أدخل المستخدم Bob، فإن المخرجات المتوقعة هي Hello, Bob!.
ستحتاج إلى:
- إنشاء كائن
Stringلقراءة المدخلات. - اطلب من المستخدم إدخال اسمه: "
Enter your name:" - اقرأ اسم المستخدم باستخدام طريقة
std::ioالمناسبة. - اطبع
Hello,متبوعًا بالاسم المخزن وعلامة تعجب!في النهاية.
ورقة مرجعية
للحصول على مدخلات المستخدم في Rust، قم باستيراد مكتبة std::io:
use std::io;لقراءة مدخلات نصية من المستخدم:
let mut my_var = String::new();
io::stdin().read_line(&mut my_var).unwrap();لتحويل المدخلات النصية إلى رقم:
let age: i32 = input.trim().parse().unwrap();تقوم الطريقة .trim() بإزالة المسافات البيضاء (بما في ذلك الأسطر الجديدة الناتجة عن الضغط على Enter) من المدخلات.
جرّب بنفسك
use std::io;
fn main() {
// إنشاء كائن سلسلة نصية (String)
let mut name = String::new();
// اطلب من المستخدم إدخال اسمه (استخدم println)
// قراءة اسم المستخدم
// طباعة رسالة الترحيب
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)اختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص7أساسيات الإدخال والإخراج
الطباعة على الكونسولقراءة مدخلات المستخدممراجعة - حتى 120مراجعة - True أو False2المتغيرات - الجزء الأول
الأرقامالمحارف (Char)النصوص (String)القيم المنطقية (Boolean)المتغيرات القابلة للتغيير5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالث11الدوال
تعريف الدوالالمعاملات والوسائطقيم الإرجاعقيم إرجاع متعددةمراجعة - دالة Sigmaمراجعة - دالة التحقق14التكرار عبر المصفوفات
دليل النطاق (Range)حلقة For المحسنةالاستعارة في الحلقةعمليات المصفوفات الشائعة3المتغيرات - الجزء الثاني
التصريح عن النوعقواعد التسميةاستنتاج النوعمراجعة - تهيئة المتغيراتتحويل الأنواع9الحلقات التكرارية
For عبر السلاسلحلقة Whileجملة Breakجملة Continueالحلقات المتداخلةتسميات الحلقاتالحلقة اللانهائيةمراجعة - الإدخال الديناميكي