Tra cứu tùy chọn
Thuộc phần Logic và luồng thực thi trong hành trình Swift của Coddy. Bài học 13 trên 56.
Phép truy cập bằng chỉ số của từ điển luôn trả về một giá trị Optional: giá trị khi khóa tồn tại, nil khi khóa không tồn tại. Swift buộc bạn xử lý cả hai trường hợp.
let prices: [String: Int] = ["apple": 1, "bread": 3]
let p = prices["apple"]
print(p) // Optional(1)Ba cách quen thuộc để xử lý giá trị tùy chọn. Hãy chọn cách phù hợp với tình huống.
1. if let: xử lý rõ ràng cả hai nhánh:
if let p = prices["apple"] {
print("apple costs \(p)")
} else {
print("unknown")
}2. toán tử nil-coalescing ??: cung cấp giá trị dự phòng ngay trên cùng một dòng:
let p = prices["olive"] ?? 0 // 03. chỉ số dưới với giá trị mặc định: kết quả giống nhau, nhưng giá trị mặc định cũng được giữ lại nếu bạn ghi lại vào khóa đó:
var counts = ["a": 2]
counts["b", default: 0] += 1 // counts == ["a": 2, "b": 1]Thử thách
DễĐã cho từ điển prices. Đọc một dòng đầu vào: danh sách các mặt hàng được phân tách bằng dấu phẩy mà người dùng muốn mua.
Với mỗi mặt hàng, theo thứ tự đầu vào, hãy tra cứu mặt hàng đó trong prices. In một dòng cho mỗi mặt hàng:
<item> @ <price>khi mặt hàng có trong từ điển<item> not soldnếu không
Sau khi liệt kê mọi mặt hàng, in một dòng cuối cùng: Total: <sum>. Coi mặt hàng không có trong từ điển có giá là 0 bằng cách dùng toán tử nil-coalescing.
Với đầu vào apple,bread,olive,milk, đầu ra là:
apple @ 1
bread @ 3
olive not sold
milk @ 4
Total: 8Tự làm thử
let prices: [String: Int] = ["apple": 1, "bread": 3, "milk": 4]
let items = readLine()!.components(separatedBy: ",")
// TODO: tra cứu từng mặt hàng; in ra '@ price' hoặc 'not sold'; tính tổng bằng ?? 0
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 Logic và luồng thực thi
1Chuỗi chuyên sâu
Đếm và chỉ sốChữ hoa, chữ thường và xóa khoảng trắngTìm kiếm trong chuỗiTách và nối chuỗiThay thế chuỗi conÔn tập: Kiểm tra tên người dùng4Tập hợp
Tạo tập hợpPhép hợp và phép giaoPhép trừ và hiệu đối xứngTập con và tập hợp conÔn tập: Bộ lọc thẻ7Dự án: Theo dõi thói quen
Tổng quan dự ánĐánh dấu hoàn thành10Dự án: bộ máy trắc nghiệm
Tổng quan dự ánĐặt câu hỏiTự luyện tập: Playground Swift