Menu
Coddy logo textTech

Метод 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))  // 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")
}
// Верный выбор

Метод contains() также работает со строками, позволяя проверить, содержится ли подстрока внутри более длинной строки:

let message = "Hello, Swift!"
print(message.contains("Swift"))  // true
challenge icon

Задание

Легко

Вы получите две строки входных данных:

  1. Список разрешенных имен пользователей через запятую (например, admin,user,guest,moderator)
  2. Имя пользователя для проверки

Проверьте, существует ли имя пользователя в списке разрешенных. Если да, выведите Access granted. Если нет, выведите Access denied.

Шаги:

  1. Прочитайте список, разделенный запятыми, и разделите его на массив строк
  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!")
}
// У нас есть бананы!

Он работает с любым типом массива:

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Проверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы