Guard let
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 13 trên 86.
Trong khi if let mở gói một giá trị tùy chọn và chạy code khi có giá trị, guard let lại làm ngược lại. Câu lệnh này thoát sớm khi thiếu giá trị. Cách này đặc biệt hữu ích trong các hàm, khi bạn muốn xử lý trường hợp “không mong muốn” trước và giữ cho logic chính gọn gàng.
func greet(name: String?) {
guard let unwrappedName = name else {
print("No name provided")
return
}
print("Hello, \(unwrappedName)!")
}
greet(name: "Taylor") // Xin chào, Taylor!
greet(name: nil) // Chưa cung cấp tênCâu lệnh guard let kiểm tra xem name có giá trị hay không. Nếu không, khối lệnh else sẽ chạy và hàm kết thúc bằng return. Nếu giá trị optional có giá trị, giá trị đó sẽ được mở gói thành unwrappedName. Đây là điểm khác biệt chính so với if let: biến đã mở gói vẫn khả dụng trong phần còn lại của hàm, chứ không chỉ bên trong một khối lệnh.
Mẫu "thoát sớm" này giúp code dễ đọc hơn bằng cách xử lý các trường hợp lỗi ngay từ đầu, nhờ đó logic chính không bị lồng trong nhiều câu lệnh if.
Thử thách
DễViết một hàm (function) validateAge nhận tham số tùy chọn age và dùng guard let để bóc tách giá trị đó một cách an toàn.
Nếu tuổi là nil, hãy trả về "Invalid age". Nếu không, hãy trả về "Age: [value]", trong đó [value] là tuổi đã được bóc tách.
Tham số:
age(Int?): Số nguyên tùy chọn biểu thị tuổi của một người
Giá trị trả về: Một chuỗi, là "Invalid age" nếu đầu vào là nil, hoặc "Age: [value]" với giá trị đã được bóc tách.
Ví dụ: Nếu age là 25, hãy trả về "Age: 25". Nếu age là nil, hãy trả về "Invalid age".
Tự làm thử
func validateAge(age: 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