Phương thức enumerate
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 70 trên 86.
Đôi khi, khi lặp qua một mảng, bạn cần biết không chỉ phần tử mà cả vị trí của nó. Bạn có thể tự theo dõi chỉ số bằng một biến đếm, nhưng Swift có cách gọn hơn: phương thức enumerated().
Khi gọi enumerated() trên một mảng, hàm này trả về một dãy tuple, trong đó mỗi tuple chứa chỉ số và phần tử:
let colors = ["Red", "Green", "Blue"]
for (index, color) in colors.enumerated() {
print("\(index): \(color)")
}
// 0: Red
// 1: Green
// 2: BlueHãy chú ý cách ta phân rã từng bộ (tuple) ngay trong vòng lặp bằng (index, color). Nhờ vậy, ta có thể truy cập cả hai giá trị mà không cần viết thêm code.
Điều này đặc biệt hữu ích khi bạn cần hiển thị danh sách được đánh số hoặc thực hiện các thao tác phụ thuộc vào vị trí của một phần tử:
let tasks = ["Wake up", "Exercise", "Eat breakfast"]
for (index, task) in tasks.enumerated() {
print("Task \(index + 1): \(task)")
}
// Nhiệm vụ 1: Thức dậy
// Nhiệm vụ 2: Tập thể dục
// Nhiệm vụ 3: Ăn sángPhương thức enumerated() giúp code của bạn gọn gàng và dễ đọc hơn so với việc tự quản lý một biến đếm riêng.
Thử thách
DễViết một hàm (function) formatWithPositions nhận items và trả về một chuỗi đã định dạng, hiển thị từng phần tử cùng số thứ tự của nó.
Dùng phương thức enumerated() để duyệt qua mảng (array) và tạo chuỗi có số thứ tự bắt đầu từ 1 đứng trước mỗi phần tử.
Cách thực hiện:
- Duyệt qua mảng bằng
enumerated() - Với mỗi phần tử, tạo một chuỗi theo định dạng
"position. item"(đánh số bắt đầu từ 1) - Nối tất cả chuỗi đã định dạng bằng ký tự xuống dòng (
\n)
Tham số:
items([String]): Một mảng chuỗi cần định dạng
Giá trị trả về: Một chuỗi duy nhất, mỗi phần tử nằm trên một dòng riêng và có số thứ tự đứng trước (String). Định dạng: "1. item1\n2. item2\n3. item3"
Ví dụ: Nếu items là ["Apple", "Banana", "Cherry"], hàm sẽ trả về:
"1. Apple\n2. Banana\n3. Cherry"Lưu ý: Nếu mảng rỗng, hãy trả về chuỗi rỗng "".
Tự làm thử
func formatWithPositions(items: [String]) -> String {
// Viết code ở đây
}
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
4Các toán tử, phần 1
Toán tử số họcToán tử moduloPhép gán kết hợpÔn tập: phép tính đơn giảnToán tử so sánh7Nhập xuất cơ bản
Hàm in raNội suy chuỗiĐầu vào từ dòngChuyển đổi kiểu dữ liệuÔn tập đến 120Ôn tập đúng hay sai3Giá trị tùy chọn
Giá trị tùy chọn là gìMở gói bằng if letGuard letToán tử gộp nilÔn tập: mở gói an toàn6Ra quyết định
Câu lệnh ifIf và elseÔn tập: máy tính đơn giảnCâu lệnh switchSwitch với khoảng giá trị9Vòng lặp
Vòng lặp for-inVòng lặp whileVòng lặp repeat-whileBreakContinueÔn tập: giai thừaDải giá trị trong vòng lặpVòng lặp lồng nhauÔn tập: đầu vào động12Kiến thức cơ bản về mảng
Khai báo mảngTruy cập phần tửChỉnh sửa mảngPhương thức của mảngÔn tập: Danh sách sản phẩmÔn tập: Mảng đảo ngượcTuple15Trình theo dõi chi tiêu hằng ngày
Tổng quan về dự ánThoát chương trìnhTự luyện tập: Playground Swift