دالة Contains
جزء من قسم الأساسيات في رحلة Swift على Coddy — الدرس 76 من 86.
عند العمل مع المصفوفات، غالباً ما تحتاج إلى التحقق مما إذا كانت قيمة معينة موجودة قبل القيام بإجراء ما. توفر لغة Swift الطريقة contains() لهذا الغرض تماماً—فهي تعيد القيمة true إذا تم العثور على العنصر، و false بخلاف ذلك.
let fruits = ["apple", "banana", "orange"]
if fruits.contains("banana") {
print("We have bananas!")
}
// لدينا موز!هذا أكثر بساطة وتنظيماً من كتابة حلقة تكرارية للبحث في المصفوفة يدوياً. تعمل هذه الطريقة مع أي نوع من المصفوفات، سواء كانت تحتوي على نصوص، أو أرقام، أو قيم أخرى:
let numbers = [10, 20, 30, 40, 50]
print(numbers.contains(30)) // صحيح
print(numbers.contains(99)) // خطأحالة استخدام شائعة هي التحقق من صحة مدخلات المستخدم مقابل قائمة من القيم المسموح بها:
let validOptions = ["yes", "no", "maybe"]
let userInput = "yes"
if validOptions.contains(userInput) {
print("Valid choice")
} else {
print("Invalid choice")
}
// خيار صالحتعمل الطريقة contains() أيضاً مع السلاسل النصية للتحقق مما إذا كانت سلسلة فرعية موجودة داخل سلسلة نصية أكبر:
let message = "Hello, Swift!"
print(message.contains("Swift")) // صحيحالتحدي
سهلسوف تتلقى سطرين من المدخلات:
- قائمة بأسماء المستخدمين المسموح لهم مفصولة بفاصلة (على سبيل المثال،
admin,user,guest,moderator) - اسم المستخدم المراد التحقق منه
تحقق مما إذا كان اسم المستخدم موجوداً في القائمة المسموح بها. إذا كان موجوداً، اطبع Access granted. وإذا لم يكن موجوداً، اطبع Access denied.
الخطوات:
- اقرأ القائمة المفصولة بفاصلة وقم بتقسيمها إلى مصفوفة من السلاسل النصية (strings)
- اقرأ اسم المستخدم المراد التحقق منه
- استخدم طريقة
contains()لتحديد ما إذا كان اسم المستخدم موجوداً في القائمة المسموح بها - اطبع الرسالة المناسبة بناءً على النتيجة
تلميح: استخدم components(separatedBy:) لتقسيم سلسلة نصية إلى مصفوفة. على سبيل المثال:
let text = "a,b,c"
let parts = text.components(separatedBy: ",")ورقة مرجعية
تتحقق طريقة contains() مما إذا كانت قيمة معينة موجودة في مصفوفة، حيث تعيد true إذا تم العثور عليها و false بخلاف ذلك:
let fruits = ["apple", "banana", "orange"]
if fruits.contains("banana") {
print("We have bananas!")
}
// We have bananas!تعمل هذه الطريقة مع أي نوع من المصفوفات:
let numbers = [10, 20, 30, 40, 50]
print(numbers.contains(30)) // true
print(numbers.contains(99)) // falseحالة استخدام شائعة للتحقق من صحة المدخلات:
let validOptions = ["yes", "no", "maybe"]
let userInput = "yes"
if validOptions.contains(userInput) {
print("Valid choice")
} else {
print("Invalid choice")
}
// Valid choiceتعمل طريقة contains() أيضاً مع النصوص للتحقق من وجود نصوص فرعية:
let message = "Hello, Swift!"
print(message.contains("Swift")) // trueلتقسيم نص إلى مصفوفة، استخدم components(separatedBy:):
let text = "a,b,c"
let parts = text.components(separatedBy: ",")جرّب بنفسك
// قراءة قائمة أسماء المستخدمين المسموح بها والمفصولة بفواصل
let allowedList = readLine()!
// قراءة اسم المستخدم للتحقق منه
let username = readLine()!
// TODO: اكتب الكود الخاص بك أدناه
// 1. قم بتقسيم allowedList إلى مصفوفة باستخدام components(separatedBy:)
// 2. استخدم contains() للتحقق مما إذا كان username موجوداً في المصفوفة
// 3. اطبع "Access granted" أو "Access denied" بناءً على النتيجةيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةالإسناد المركبمراجعة - عمليات رياضية بسيطةمعاملات المقارنة7أساسيات الإدخال والإخراج
دالة الطباعةتضمين النصوصإدخال ReadLineتحويل الأنواعمراجعة - حتى 120مراجعة - True أو False10الدوال
تعريف دالةالمعاملات والوسائطقيم الإرجاعتسميات الوسائطمراجعة - دالة Sigmaمراجعة - دالة Validationالقيم الافتراضية2المتغيرات
Let مقابل Varتوصيف الأنواع (Type Annotations)الأرقامStringBooleanقواعد التسميةمراجعة - تهيئة المتغيرات5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعامل الثلاثي (Ternary Operator)8حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على المدخلات14المصفوفات المتقدمة
تقطيع المصفوفات - الجزء الأولتقطيع المصفوفات - الجزء الثانيمعاملات المتسلسلاتدالة Contains3القيم الاختيارية (Optionals)
ما هي القيم الاختياريةفك القيم باستخدام If Letاستخدام Guard Letمعامل دمج Nilمراجعة - فك القيم بأمان9حلقات التكرار
حلقة For-Inحلقة Whileحلقة Repeat-WhileBreakContinueمراجعة - المضروب (Factorial)النطاقات في حلقات التكرارالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)