مراجعة - إنشاء Book Struct
جزء من قسم Logic & Flow في رحلة Rust على Coddy — الدرس 26 من 66.
التحدي
سهلستتلقى أربعة مدخلات: عنوان الكتاب، واسم المؤلف، وسنة النشر (كعدد صحيح)، وعدد الصفحات (كعدد صحيح). قم بتعريف هيكل Book بأربعة حقول: title من نوع String، و author من نوع String، و year من نوع i32، و pages من نوع i32. قم بإنشاء مثيل (instance) لهذا الهيكل باستخدام قيم المدخلات واطبع معلومات الكتاب.
المتطلبات:
- قم بتعريف هيكل
Bookبالحقول:title: String، وauthor: String، وyear: i32، وpages: i32 - اقرأ المدخل الأول كعنوان للكتاب
- اقرأ المدخل الثاني كاسم للمؤلف
- اقرأ المدخل الثالث وقم بتحويله إلى
i32لسنة النشر - اقرأ المدخل الرابع وقم بتحويله إلى
i32لعدد الصفحات - قم بإنشاء مثيل من هيكل
Bookبهذه القيم - اطبع معلومات الكتاب بالتنسيق الموضح أدناه تماماً
المدخلات:
- السطر الأول: عنوان الكتاب (مثلاً:
The Rust Programming Language) - السطر الثاني: اسم المؤلف (مثلاً:
Steve Klabnik) - السطر الثالث: سنة النشر كعدد صحيح (مثلاً:
2018) - السطر الرابع: عدد الصفحات كعدد صحيح (مثلاً:
552)
المخرجات:
- السطر الأول:
Book: [title] - السطر الثاني:
Author: [author] - السطر الثالث:
Year: [year] - السطر الرابع:
Pages: [pages]
جرّب بنفسك
use std::io;
// TODO: قم بتعريف هيكل Book هنا مع الحقول التالية: title، author، year، و pages
fn main() {
// قراءة عنوان الكتاب
let mut title = String::new();
io::stdin().read_line(&mut title).expect("Failed to read line");
let title = title.trim().to_string();
// قراءة اسم المؤلف
let mut author = String::new();
io::stdin().read_line(&mut author).expect("Failed to read line");
let author = author.trim().to_string();
// قراءة سنة النشر
let mut year_input = String::new();
io::stdin().read_line(&mut year_input).expect("Failed to read line");
let year: i32 = year_input.trim().parse().expect("Failed to parse year");
// قراءة عدد الصفحات
let mut pages_input = String::new();
io::stdin().read_line(&mut pages_input).expect("Failed to read line");
let pages: i32 = pages_input.trim().parse().expect("Failed to parse pages");
// TODO: قم بإنشاء مثيل من هيكل Book باستخدام القيم المدخلة
// TODO: قم بطباعة معلومات الكتاب بالتنسيق المطلوب
}جميع دروس Logic & Flow
1تدفق التحكم المتقدم
تعبير 'match'مطابقة قيم متعددةمطابقة النطاقاتتعبير 'if let'الحلقات التكرارية كتعبيراتمراجعة - محلل أوامر بسيط4تجميع البيانات باستخدام Structs
ما هو الـ Struct؟نظرة عامة على الـ Structsالوصول إلى حقول الـ Structالـ Structs القابلة للتعديلالـ Structs كمعاملات للدوالالـ Tuple Structsمراجعة - إنشاء Book Struct7معالجة الأخطاء باستخدام 'Result'
ما هو 'Result'؟استخدام 'match' مع 'Result'is_ok() و is_err()اختصارات: unwrap و expectعامل علامة الاستفهام '?'تحويل السلاسل النصية إلى أرقامملخص - دالة القسمة الآمنة10الـ Closures والدوال المجهولة
ما هو الـ Closure؟تعريف Closure بسيطالـ Closures مع المعاملاتالتقاط البيئة المحيطةملخص - Closure الجامع البسيط2مقدمة في الـ Vectors
ما هو الـ Vector؟إنشاء Vectorإضافة عناصر باستخدام pushالوصول إلى عناصر الـ Vectorالتكرار عبر الـ Vectorالتكرار القابل للتعديل (Mutable Iteration)إزالة العناصرمراجعة - متتبع نقاط بسيط5أزواج (المفتاح والقيمة) مع Hash Maps
ما هو Hash Map؟إنشاء Hash Mapإدراج أزواج (المفتاح والقيمة)الوصول إلى القيمالتكرار عبر Hash Mapتحديث قيمةإزالة زوجملخص - عداد الكلمات6التعامل مع غياب القيم باستخدام 'Option'
ما هو الـ 'Option'؟استخدام 'match' مع 'Option''is_some()' و 'is_none()'فك تغليف الـ 'Option'الدالة 'expect'توفير قيمة افتراضية: 'unwrap_or'مراجعة - البحث عن عنصر9شرائح الـ String والمزيد
String مقابل &strإنشاء شرائح الـ Stringالشرائح كمعاملات للدوالشرائح أخرىمراجعة - إيجاد الكلمة الأولى