English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا المقال، ستتعرف على Range (النطاق) و النوع والأمثلة في Swift.
النطاق هو فجوة القيم. مثال بسيط على نطاق هو 0،1،2،3،4،5،6،7،8،9، لأن الأرقام من 0 إلى 9 متصلة.
يمكننا إنشاء نطاقات باستخدام عميلي النطاق التالي بسرعة:
إنه يحتوي على جميع القيم في الفجوة (من الحد الأدنى إلى الحد الأعلى). يتم تسميته باستخدام عميل … (ثلاث نقاط).
مثال: 1...3 تعريف نطاق يحتوي على القيم 1،2،3
إنه يحتوي على جميع القيم في النطاق (من الحد الأدنى إلى الحد الأعلى)، لكنه لا يشمل الأخير (الحد الأعلى). يتم تسميته باستخدام عميل ..<.
مثال: 1..<3 تعريف نطاق يحتوي على القيم 1 و2
النطاق المقفل هو نطاق يتم إنشاؤه باستخدام عميل النطاق المقفل. إنه يحتوي على جميع القيم من الحد الأدنى إلى الحد الأعلى.
//1...3 تعريف نطاق يحتوي على القيم 1،2 و3 لـ قيمة في 1...3 { print(value) {}
عند تشغيل هذا البرنامج، الناتج هو:
1 2 3
في المثال السابق، تم إنشاء نطاق يحتوي على الأرقام من 1 إلى 3 (1...3). استخدمنا دائرة التكرار for-in لرؤية القيم التي يحتوي عليها النطاق. للحصول على معلومات إضافية حول دائرة التكرار for-in، يرجى زيارةدائرة التكرار Swift for-in.
باستخدام دائرة التكرار for-in، يمكننا رؤية أن النطاق المغلق يحتوي على جميع القيم في النطاق المحدد، بما في ذلك الحد الأدنى (1) والحد الأعلى (3).
النطاق الذي يتم إنشاؤه باستخدام ناشر النطاق غير المكتمل يسمى نطاقًا غير مكتمل. يشمل جميع القيم من الحد الأدنى إلى الحد الأعلى، لكنلا يشملالقيمة العليا.
// 1..<3 تعريف نطاق يحتوي على القيم 1,2 for value in 1..<3 { print(value) {}
عند تشغيل هذا البرنامج، الناتج هو:
1 2
في المثال السابق، استخدمنا دائرة التكرار for-in لرؤية كيف يعمل نطاق النطاق.
لا تحتاج إلى طباعة جميع القيم، يمكنك بوضوح رؤية أن استخدام ناشر النطاق غير المكتمل يطبع فقط 1 و2 ولا يشمل القيمة العليا (أي 3).
النطاق أحادي الجانب هو نطاق متسلسل قدر الإمكان في اتجاه واحد. يمكن إنشاؤه باستخدام ناشر النطاق غير المكتمل وناشر النطاق المكتمل، لكن يمكن استخدام الناشر فقط في اتجاه واحد.
let range = ..<2 print(range.contains(-1)) print(range.contains(2))
عند تشغيل هذا البرنامج، الناتج هو:
true false
استخدام ناشر النطاق غير المكتمل يتم إنشاء نطاق أحادي الجانب يحتوي على أي عدد أقل من 2.
لتحقق من نتائجنا، استخدمنا طريقة contains. إذا كان العنصر موجودًا في النطاق، فإن contains تعود بـ true، وإلا تعود بـ false.
range.contains(-1) تتحقق من whether -1 في النطاق. نظرًا لأن الحد الأعلى لنطاقه أحادي الجانب هو 2 و-1 < 2، فإنه موجود في النطاق، ولذلك يتم عرض print(range.contains(-1)) كـ true على الشاشة.
لكن، بسبب استخدام ناشر النطاق غير المكتمل، القيمة العليا (2) ليست مضمونة في النطاق. لذلك، يعود range.contains(2) بـ false.
let range = 2... print(range.contains(100)) print(range.contains(1))
عند تشغيل هذا البرنامج، الناتج هو:
true false
استخدام ناشر النطاق المغلق يتم إنشاء نطاق أحادي الجانب يحتوي على أي عدد أكبر من 2.
range.contains(100) يتحقق مما إذا كان 100 موجودًا في النطاق. لأنه نطاق جانبي، و100 أكبر من 2، فإنه موجود في النطاق، ويتم طباعة الناتج على الشاشة كـ true.
لكن لديها قيمة الحد الأدنى (2)، لذا يعود range.contains(1) إلى false.
بداية النطاق يجب أن تكون أقل أو تساوي نهاية النطاق. في مثالنا (lowerBound...upperBound)، يجب أن يكون القيمة السفلية أقل من القيمة العليا. ولكن يمكن أن تكون سلبية.
مثال:
3...1 // خطأ: لا يمكن استخدام upperBound < lowerBound لتشكيل Range -3...1 // هذا هو نطاق صالح. يمكن أن تحتوي الحدود العليا والسفلى على قيم سلبية.
يمكننا استخدام دائرة التكرار for-in لاستدعاء النطاق بأكمله (لا يشمل النطاق الجانبي).
يمكننا أيضًا استخدام عمليات النطاق لاستدعاء النطاقمجموعاتالعنصر.