Toán tử chuỗi
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 75 trên 86.
Swift cung cấp các thuộc tính (property) và phương thức (method) tích hợp hữu ích, giúp bạn nhanh chóng thu thập thông tin về mảng (array) mà không cần viết vòng lặp (loop). Các toán tử trên dãy (sequence operators) này giúp bạn thực hiện những phép tính thông dụng với ít code nhất.
Thuộc tính count trả về số phần tử trong một mảng:
let scores = [85, 92, 78, 90]
print(scores.count) // 4Với mảng số, Swift cung cấp các phương thức tìm giá trị nhỏ nhất và lớn nhất. Các phương thức min() và max() trả về giá trị tùy chọn vì mảng rỗng không có giá trị nhỏ nhất hoặc lớn nhất:
let temperatures = [72, 68, 75, 80, 65]
if let lowest = temperatures.min() {
print(lowest) // 65
}
if let highest = temperatures.max() {
print(highest) // 80
}Để tính tổng tất cả phần tử, hãy dùng phương thức reduce. Phương thức này kết hợp mọi giá trị, bắt đầu từ một giá trị ban đầu:
let prices = [10, 20, 30]
let total = prices.reduce(0, +)
print(total) // 600 là giá trị bắt đầu, còn + yêu cầu Swift cộng từng phần tử vào tổng đang tính. Kết hợp các toán tử này, bạn có thể dễ dàng tính giá trị trung bình:
let grades = [85, 90, 78, 92]
let average = grades.reduce(0, +) / grades.count
print(average) // 86Thử thách
DễViết hàm analyzeScores nhận scores và trả về một chuỗi tóm tắt các thống kê về mảng.
Dùng các toán tử trình tự để tính số lượng, giá trị nhỏ nhất, giá trị lớn nhất và giá trị trung bình của các điểm, sau đó định dạng chúng thành một chuỗi tóm tắt duy nhất.
Logic:
- Lấy tổng số phần tử bằng
count - Tìm giá trị nhỏ nhất bằng
min() - Tìm giá trị lớn nhất bằng
max() - Tính tổng bằng
reduce(0, +)rồi chia cho số lượng để lấy giá trị trung bình - Trả về một chuỗi đã định dạng chứa tất cả thống kê
Tham số:
scores([Int]): Một mảng điểm số nguyên (đảm bảo có ít nhất một phần tử)
Giá trị trả về: Một chuỗi đã định dạng chứa các thống kê (String). Định dạng: "Count: X, Min: X, Max: X, Avg: X"
Ví dụ: Nếu scores là [85, 90, 78, 92], hàm sẽ trả về "Count: 4, Min: 78, Max: 92, Avg: 86".
Lưu ý: Giá trị trung bình cần được tính bằng phép chia số nguyên (không có chữ số thập phân).
Tự làm thử
func analyzeScores(scores: [Int]) -> 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