Toán tử gộp nil
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 14 trên 86.
Đôi khi, bạn chỉ muốn cung cấp một giá trị mặc định khi một giá trị tùy chọn là nil, mà không cần viết nhiều dòng code. Toán tử kết hợp nil (??) của Swift làm đúng việc đó. Toán tử này mở gói giá trị tùy chọn nếu nó có giá trị, hoặc trả về một giá trị mặc định nếu nó là nil.
let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // GuestVì nickname là nil, toán tử (operator) trả về "Guest". Nếu nickname có giá trị, chương trình sẽ dùng giá trị đó.
let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoderToán tử nil coalescing rất phù hợp với các câu lệnh viết trên một dòng khi bạn cần giá trị dự phòng. Cách này gọn hơn việc viết câu lệnh if let khi bạn chỉ muốn thay nil bằng một giá trị mặc định. Khi giá trị mặc định không phải là tùy chọn, kết quả cũng không phải là tùy chọn, vì vậy bạn có thể dùng trực tiếp mà không cần mở gói thêm.
Thử thách
DễViết một hàm (function) getDisplayName nhận một username tùy chọn và một defaultName, sau đó trả về tên hiển thị phù hợp bằng toán tử kết hợp nil.
Nếu username trống (được biểu thị bằng chuỗi rỗng ""), hãy xem giá trị đó là nil và trả về tên mặc định. Nếu không, hãy trả về username.
Tham số:
username(String): Tên người dùng (chuỗi rỗng biểu thị nil)defaultName(String): Tên dự phòng cần dùng
Giá trị trả về: username nếu không trống, nếu không thì là defaultName.
Gợi ý: Bên trong hàm, lưu username vào một biến String?, và nếu username bằng "", hãy dùng một câu lệnh if đơn giản để đặt biến đó thành nil. Sau đó dùng ?? để cung cấp giá trị dự phòng.
Tự làm thử
func getDisplayName(username: String, defaultName: 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