Menu
CoddyTech

Phương thức chứa

Thuộc phần Kiến thức nền tảng trong hành trình Swift của Coddy. Bài học 76 trên 86.

Khi làm việc với mảng (array), bạn thường cần kiểm tra xem một giá trị cụ thể có tồn tại hay không trước khi thực hiện hành động. Swift cung cấp phương thức (method) contains() cho mục đích này. Phương thức trả về true nếu tìm thấy phần tử, nếu không thì trả về false.

let fruits = ["apple", "banana", "orange"]

if fruits.contains("banana") {
    print("We have bananas!")
}
// Chúng ta có chuối!

Cách này gọn hơn nhiều so với việc viết vòng lặp để tự tìm trong mảng. Phương thức này hoạt động với mọi kiểu mảng, dù mảng chứa chuỗi, số hay giá trị khác:

let numbers = [10, 20, 30, 40, 50]

print(numbers.contains(30))  // true
print(numbers.contains(99))  // false

Một trường hợp sử dụng phổ biến là xác thực đầu vào của người dùng bằng cách đối chiếu với danh sách các giá trị được phép:

let validOptions = ["yes", "no", "maybe"]
let userInput = "yes"

if validOptions.contains(userInput) {
    print("Valid choice")
} else {
    print("Invalid choice")
}
// Lựa chọn hợp lệ

Phương thức contains() cũng hoạt động với chuỗi để kiểm tra xem một chuỗi con có nằm trong một chuỗi dài hơn hay không:

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

Thử thách

Dễ

Bạn sẽ nhận được hai dòng đầu vào:

  1. Danh sách tên người dùng được phép, phân tách bằng dấu phẩy (ví dụ: admin,user,guest,moderator)
  2. Một tên người dùng cần kiểm tra

Kiểm tra xem tên người dùng có trong danh sách được phép hay không. Nếu có, hãy in ra Access granted. Nếu không, hãy in ra Access denied.

Các bước:

  1. Đọc danh sách phân tách bằng dấu phẩy và tách danh sách đó thành một mảng (array) chuỗi (string)
  2. Đọc tên người dùng cần kiểm tra
  3. Dùng phương thức contains() để xác định tên người dùng có trong danh sách được phép hay không
  4. In ra thông báo phù hợp dựa trên kết quả

Gợi ý: Dùng components(separatedBy:) để tách một chuỗi thành một mảng. Ví dụ:

let text = "a,b,c"
let parts = text.components(separatedBy: ",")

Tự làm thử

// Đọc danh sách tên người dùng được phép, phân tách bằng dấu phẩy
let allowedList = readLine()!

// Đọc tên người dùng cần kiểm tra
let username = readLine()!

// TODO: Viết code bên dưới
// 1. Dùng components(separatedBy:) để tách allowedList thành một mảng (array)
// 2. Dùng contains() để kiểm tra username có trong mảng hay không
// 3. In ra "Access granted" hoặc "Access denied" tùy theo kết quả
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Playground Swift