Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

دالة 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"))  // صحيح
challenge icon

التحدي

سهل

سوف تتلقى سطرين من المدخلات:

  1. قائمة بأسماء المستخدمين المسموح لهم مفصولة بفاصلة (على سبيل المثال، admin,user,guest,moderator)
  2. اسم المستخدم المراد التحقق منه

تحقق مما إذا كان اسم المستخدم موجوداً في القائمة المسموح بها. إذا كان موجوداً، اطبع Access granted. وإذا لم يكن موجوداً، اطبع Access denied.

الخطوات:

  1. اقرأ القائمة المفصولة بفاصلة وقم بتقسيمها إلى مصفوفة من السلاسل النصية (strings)
  2. اقرأ اسم المستخدم المراد التحقق منه
  3. استخدم طريقة contains() لتحديد ما إذا كان اسم المستخدم موجوداً في القائمة المسموح بها
  4. اطبع الرسالة المناسبة بناءً على النتيجة

تلميح: استخدم 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" بناءً على النتيجة
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات