English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدرس، ستتعلم عن المصفوفات، إنشاء المصفوفات، الوصول إلى قيم المصفوفة، والعمليات الشائعة في المصفوفات.
في المقالة السابقةأنواع البيانات Swiftفي المقالة، تعلمنا كيفية إنشاء بعض أنواع البيانات المتغيرة أو الثابتة التي يمكنها حفظ قيمة واحدة.
لكن ماذا إذا أردنا تخزين عدة قيم من نفس النوع. نستخدم في Swift ما يُدعى المصفوفة الشيء
المصفوفة هي مجرد حاوية يمكنها حفظ عدة بيانات من نفس النوع في قائمة منظمه، أي أنك تستطيع الحصول على العناصر باستخدام نفس الترتيب الذي تم تعريفه في المصفوفة.
يمكن لمصفوفة تخزين أي نوع بيانات مثل Int،String،Class وما إلى ذلك.
يمكنك إنشاء مصفوفة فارغة من خلال تحديد النوع داخل الأقواس [].
تذكر أنك يجب أن تشمل النوع داخل الأقواس، وإلا سيأخذ Swift النوع كنوع بيانات عادي وستكون قادرًا على تخزين قيمة واحدة فقط.
let emptyIntArr:[Int] = [] print(emptyIntArr)
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
[ ]
في البرنامج أعلاه، قمنا بتعريف متغير ثابت emptyIntArr يمكنه تخزين مصفوفة من الأعداد الصحيحة واستخدام القيمة 0 لتعريفها.
print(emptyIntArr)
يمكنك أيضًا تعريف مصفوفة فارغة كما يلي:
let emptyIntArr:Array<Int> = Array() print(emptyIntArr)
print(emptyIntArr)
أو
مثال 2: إعلان مصفوفة تحتوي على بعض القيم let someIntArr = [1،2،3،4،5،6،7،8،9]
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
print(someIntArr)
[1،2،3،4،5،6،7،8،9]في البرنامج المذكور أعلاه، قمنا بتسمية ثابت someIntArr، يمكنه تخزين مصفوفة من الأعداد الصحيحة دون الحاجة إلى تحديد النوع بشكل واضح. بالإضافة إلى ذلك، نستخدم القيم 1،2،3،4،5،6،7،8،9
مثال 3: إعلان مصفوفة تحتوي على قيمة مكررة محددة
يمكنك أيضًا تكرار القيمة المحددة المرة المطلوبة لتكوين مصفوفة في Swift. يتم ذلك باستخدام مصفوفة المبادئ مع repeating وcount. let arrWithRepeatingValues = Array(repeating: "مرحبًا،العالم", count: 4)
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
print(arrWithRepeatingValues)
["مرحبًا،العالم", "مرحبًا،العالم", "مرحبًا،العالم", "مرحبًا،العالم"] في البرنامج المذكور أعلاه، قمنا بتسمية ثابت arrWithRepeatingValues، والذي يحتوي على النصوص مرحبًا،العالممصفوفة,
ويفترض تكرار نفس القيمة 4 مرات، كما هو محدد في count في المثال.الاحتياطى:
كيف يتم تخزين القيم في المصفوفة؟
let intArr = [21, 34, 54, 12]
بإفتراض أن لديك ثابت يمكنه تخزين مصفوفة من الأنواع النصية، مثل ما يلي:
تمثل الرسومات التوضيحية كيف يتم تخزين القيم في المصفوفة كما يلي:
كيف يمكنك الوصول إلى عناصر المصفوفة في Swift؟ تحتباستخدام سكلاً لاستدعاء عناصر المصفوفة، أي أنك بحاجة إلى تضمين المؤشر الذي تريد الوصول إليه في بيانات بين نقطتي السهم في اسم المصفوفة.
بإفتراض أنك قمت بتسمية مصفوفة كما هو موضح أعلاه intArr. فإن العنصر الأول هو intArr[0]، والعنصر الثاني هو intArr[1]، وهكذا.
let intArr = [21, 34, 54, 12] print(intArr[0]) print(intArr[1]) print(intArr[2]) print(intArr[3])
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
21 34 54 12
يمكنك أيضًا استخدام حلقة for-in لاستدعاء عناصر المجموعة. لمزيد من المعلومات، يرجى الرجوع إلىدائرة Swift for-in.
يمكنك تعديل عنصر المجموعة باستخدام نحو الأسهم والسهمassignment operator، مما يعني أنك بحاجة إلى تضمين إندكس العنصر الذي تريد تحديثه في مربع التحكم خلف اسم المجموعة، ثم السهمassignment operator والقيمة الجديدة.
var intArr = [21, 34, 54, 12] intArr[0] = 12 intArr[1] = 42 intArr[2] = 45 intArr[3] = 21 print(intArr)
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
[12, 42, 45, 21]
يمكنك أيضًا تعديل جميع عناصر المجموعة باستخدام القيم الجديدة التالية، مثلما هو موضح أدناه:
var intArr = [21, 34, 54, 12] intArr = [1, 2, 3] print(intArr)
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
[1, 2, 3]
لكن لا يمكنك إضافة عنصر جديد إلى المجموعة الحالية باستخدام نحو الأسهم. إذا قمت بذلك، فإنه سينتج عنه خطأ. لا يمكنك تنفيذ ما يلي:
var intArr = [21, 34, 54, 12] intArr[4] = 10
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
خطأ حاسم: مؤشر خارج النطاق
أعطت البرنامج الخطأ عند تخصيص العنصر الجديد للنوع intArr عند تخصيص العنصر الجديد للنوع intArr. هذا يرجع إلى عدم تخصيص intArr لذاكرة إضافية للإندكس 4، مما يجعله غير قادر على تخزين القيمة المقدمة.
لضمان إدراج العنصر الجديد في المجموعة بشكل صحيح، نستخدم طريقة append() الخاصة بالمجموعة. سيتم شرح استخدامها لاحقًا.
تحدد هذه الخاصية ما إذا كانت المجموعة فارغة أم لا. إذا لم تحتوي المجموعة على أي قيمة، فإنها تعود بـ true، وإلا تعود بـ false.
let intArr = [21, 34, 54, 12] print(intArr.isEmpty)
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
false
تستخدم هذه الخاصية لاستدعاء العنصر الأول في المجموعة.
let intArr = [21, 34, 54, 12] print(intArr.first)
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
Optional(21)
بالنسبة لنفس الأمر، يمكنك استخدام خاصية last لاستدعاء العنصر الأخير في المجموعة.
يستخدم دالة append لضمان إدراج/إضافة عنصر في نهاية المجموعة.
var intArr = [21, 34, 54, 12] intArr.append(32) print(intArr)
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
[21, 34, 54, 12, 32]
يمكنك أيضًا إضافة محتويات مجموعة إلى مجموعة أخرى، مثلما هو موضح أدناه:
var firstArr = [1,2,3,4] var secondArr = [5,6,7,8] firstArr.append(contentsOf: secondArr) print(firstArr)
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
[1, 2, 3, 4, 5, 6, 7, 8]
يستخدم هذا الدالة لإدراج/تثبيت العنصر في موقف معين في اللوحة.
var intArr = [21,34,54,12] intArr.insert(22, at: 1) print(intArr)
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
[21, 22, 34, 54, 12]
بالنفس الطريقة، يمكنك أيضًا استخدام removeproperty لإزالة العنصر في الموقع المحدد.
يستخدم هذا الدالة لإزالة العنصر المحدد في الموقع المحدد من اللوحة وإرجاعه.
var strArr = ["ab","bc","cd","de"] let removedVal = strArr.remove(at: 1) print("قيمة الإزالة هي \(removedVal)") print(strArr)
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
قيمة الإزالة هي bc ["ab", "cd", "de"]
بالنفس الطريقة، يمكنك أيضًا استخدام removeFirst لإزالة العنصر الأول من اللوحة، removeLast لإزالة العنصر الأخير، وكذلك استخدام removeAll لإفراغ اللوحة.
يستخدم هذا الدالة لإرجاع عناصر اللوحة في ترتيب معكوس.
var intArr = [21,22,23,24] let reversedArr = Array(intArr.reversed()) print(reversedArr)
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
[24, 23, 22, 21]
يستخدم هذا الخصائص لإرجاع عدد العناصر في اللوحة.
let floatArr = [10.2,21.3,32.0,41.3] print(floatArr.count)
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
4
عند استخدام نطاق التسمية في Swift للوصول إلى عناصر اللوحة يجب التأكد من أن القيمة تقع في نطاق المؤشر، وإلا سيؤدي ذلك إلى تحطم التشغيل. دعونا نرى ذلك في مثال:
let intArr = [21, 34, 54, 12] print(intArr[-1])
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
خطأ حاسم: مؤشر خارج النطاق
في البرنامج أعلاه، المؤشر في -1لا توجد قيمة. لذلك، عند محاولة الوصول إلى القيمة في هذا المؤشر، سيحدث خطأ في التشغيل
لمنع هذا النوع من الحالات، يرجى أولاً العثور على مؤشر العنصر الذي تريد إزالته. ثم قم بإزالة العنصر في هذا المؤشر، كما هو موضح أدناه:
var intArr = [21, 34, 54, 12] if let index = intArr.index(of: 34) { print("found index") let val = intArr.remove(at: index) print(val) {}
عند تشغيل هذا البرنامج، سيتم إظهار النتيجة كالتالي:
وجدتُ مؤشرًا 34