معالجة الأخطاء
جزء من قسم الأساسيات في رحلة Swift على Coddy — الدرس 83 من 86.
التحدي
سهلفي الدرس السابق، قمت بتنفيذ ميزة "مسح جميع المصروفات". الآن، أضف معالجة الأخطاء للمدخلات غير الصالحة في جميع أنحاء متتبع المصروفات.
قم بتعديل الكود الخاص بك للتعامل مع المدخلات غير الصالحة بسلاسة:
- عندما يدخل المستخدم خيار قائمة غير صالح (أي شيء بخلاف
"1"، أو"2"، أو"3"، أو"4"، أو"5")، اطبعInvalid option. Please try again. - عند إضافة مصروف (الخيار
"1")، إذا تعذر تحويل المدخل إلىDoubleصالح، اطبعInvalid amount. Expense not added.وعد إلى القائمة دون إضافة أي شيء إلى المصفوفة - يجب أن تستمر جميع الوظائف الأخرى في العمل كما كانت من قبل
السلوك المتوقع:
- تعرض خيارات القائمة غير الصالحة رسالة خطأ وتظهر القائمة مرة أخرى
- تعرض مبالغ المصروفات غير الصالحة رسالة خطأ وتعود إلى القائمة
- تستمر المدخلات الصالحة في العمل كما تم تنفيذها في الدروس السابقة
مثال على التفاعل:
1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
7
Invalid option. Please try again.
1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
1
Enter expense amount:
abc
Invalid amount. Expense not added.
1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
1
Enter expense amount:
25.0
Expense added!
1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
2
Your expenses:
- $25.0
1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
5
Goodbye!جرّب بنفسك
// Daily Expense Tracker - Menu Display
var expenses: [Double] = []
while true {
// TODO: Write your code below to print the menu options
// Each option should be on its own line with the format: "number. option text"
print("1. Add expense")
print("2. View all expenses")
print("3. Show total and average")
print("4. Clear all expenses")
print("5. Exit")
let choice = readLine()
if choice == "1" {
print("Enter expense amount:")
if let input = readLine(), let amount = Double(input) {
expenses.append(amount)
print("Expense added!")
}
} else if choice == "2" {
if expenses.isEmpty {
print("No expenses recorded.")
} else {
print("Your expenses:")
for expense in expenses {
print("- $\(expense)")
}
}
} else if choice == "3" {
if expenses.isEmpty {
print("No expenses to calculate.")
} else {
let total = expenses.reduce(0, +)
let average = total / Double(expenses.count)
print("Total: $\(total)")
print("Average: $\(average)")
}
} else if choice == "4" {
expenses.removeAll()
print("All expenses cleared!")
} else if choice == "5" {
print("Goodbye!")
break
} else {
print("Coming soon...")
}
}جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةالإسناد المركبمراجعة - عمليات رياضية بسيطةمعاملات المقارنة7أساسيات الإدخال والإخراج
دالة الطباعةتضمين النصوصإدخال ReadLineتحويل الأنواعمراجعة - حتى 120مراجعة - True أو False10الدوال
تعريف دالةالمعاملات والوسائطقيم الإرجاعتسميات الوسائطمراجعة - دالة Sigmaمراجعة - دالة Validationالقيم الافتراضية2المتغيرات
Let مقابل Varتوصيف الأنواع (Type Annotations)الأرقامStringBooleanقواعد التسميةمراجعة - تهيئة المتغيرات5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعامل الثلاثي (Ternary Operator)8حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على المدخلات3القيم الاختيارية (Optionals)
ما هي القيم الاختياريةفك القيم باستخدام If Letاستخدام Guard Letمعامل دمج Nilمراجعة - فك القيم بأمان9حلقات التكرار
حلقة For-Inحلقة Whileحلقة Repeat-WhileBreakContinueمراجعة - المضروب (Factorial)النطاقات في حلقات التكرارالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)12أساسيات المصفوفات
تعريف مصفوفةالوصول إلى العناصرتعديل المصفوفاتدوال المصفوفاتمراجعة - قائمة المنتجاتمراجعة - المصفوفة المعكوسةTuples15متتبع المصاريف اليومية
نظرة عامة على المشروعالخروج من البرنامج