دوال المصفوفات
جزء من قسم الأساسيات في رحلة Swift على Coddy — الدرس 65 من 86.
بالإضافة إلى إضافة العناصر وإزالتها، تأتي مصفوفات Swift مع العديد من الطرق (methods) المفيدة التي تجعل العمل مع المجموعات أسهل.
تتحقق الخاصية isEmpty مما إذا كانت المصفوفة تحتوي على أي عناصر:
var tasks = [String]()
print(tasks.isEmpty) // true
tasks.append("Buy groceries")
print(tasks.isEmpty) // falseلإزالة جميع العناصر في وقت واحد، استخدم removeAll():
var numbers = [1, 2, 3, 4, 5]
numbers.removeAll()
print(numbers) // []تُرجع الدالة reversed() العناصر بترتيب عكسي:
let letters = ["A", "B", "C"]
print(Array(letters.reversed())) // ["C", "B", "A"]للقيام بالفرز، استخدم sorted() للحصول على مصفوفة مرتبة جديدة، أو sort() لفرز المصفوفة في مكانها:
let scores = [85, 42, 97, 63]
print(scores.sorted()) // [42, 63, 85, 97]
var prices = [9.99, 2.50, 5.75]
prices.sort()
print(prices) // [2.5, 5.75, 9.99]لاحظ أن sorted() تُرجع مصفوفة جديدة بينما تترك المصفوفة الأصلية دون تغيير، في حين أن sort() تعدل المصفوفة الأصلية مباشرة.
التحدي
سهلاكتب دالة باسم processScores تأخذ scores وتعيد سلسلة نصية منسقة تحتوي على معلومات حول الدرجات.
يجب أن تقوم الدالة بتحليل المصفوفة وبناء سلسلة نصية للنتيجة تتضمن ثلاث قطع من المعلومات.
المنطق:
- تحقق مما إذا كانت المصفوفة فارغة باستخدام
isEmpty - إذا كانت فارغة، أعد
"No scores" - خلاف ذلك، احصل على الدرجات المرتبة (ترتيب تصاعدي) والدرجات المعكوسة
- أعد سلسلة نصية تجمع بين النتيجتين
المعاملات:
scores([Int]): مصفوفة من درجات الأعداد الصحيحة
المخرجات: سلسلة نصية بالتنسيق التالي: "Sorted: [sorted_array], Reversed: [reversed_array]" أو "No scores" إذا كانت المصفوفة فارغة (String)
مثال: إذا كانت scores هي [85, 42, 97, 63]، يجب أن تعيد الدالة:
"Sorted: [42, 63, 85, 97], Reversed: [63, 97, 42, 85]"ملاحظة: المصفوفة المعكوسة يجب أن تكون عكس المصفوفة الأصلية، وليس المصفوفة المرتبة.
ورقة مرجعية
توفر مصفوفات Swift عدة طرق مفيدة للعمل مع المجموعات:
تتحقق الخاصية isEmpty مما إذا كانت المصفوفة تحتوي على أي عناصر:
var tasks = [String]()
print(tasks.isEmpty) // true
tasks.append("Buy groceries")
print(tasks.isEmpty) // falseاستخدم removeAll() لإزالة جميع العناصر من المصفوفة:
var numbers = [1, 2, 3, 4, 5]
numbers.removeAll()
print(numbers) // []تعيد الطريقة reversed() العناصر بترتيب عكسي:
let letters = ["A", "B", "C"]
print(Array(letters.reversed())) // ["C", "B", "A"]للفرز، استخدم sorted() لإنشاء مصفوفة مرتبة جديدة، أو sort() للفرز في نفس المكان:
let scores = [85, 42, 97, 63]
print(scores.sorted()) // [42, 63, 85, 97]
var prices = [9.99, 2.50, 5.75]
prices.sort()
print(prices) // [2.5, 5.75, 9.99]تعيد sorted() مصفوفة جديدة دون تعديل المصفوفة الأصلية، بينما تقوم sort() بتعديل المصفوفة مباشرة.
جرّب بنفسك
func processScores(scores: [Int]) -> String {
// اكتب الكود هنا
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
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أساسيات المصفوفات
تعريف مصفوفةالوصول إلى العناصرتعديل المصفوفاتدوال المصفوفاتمراجعة - قائمة المنتجاتمراجعة - المصفوفة المعكوسةTuples