Giá trị tùy chọn là gì
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 11 trên 86.
Đôi khi, một biến hoàn toàn không có giá trị. Trong Swift, ta dùng kiểu tùy chọn để biểu thị việc không có giá trị. Kiểu tùy chọn cho biết “có một giá trị và giá trị đó bằng x” hoặc “hoàn toàn không có giá trị”.
Để khai báo một kiểu tùy chọn, hãy thêm dấu hỏi ? sau kiểu dữ liệu:
var nickname: String? = "Alex"
var age: Int? = nilTrong ví dụ trên, nickname giữ giá trị "Alex", còn age giữ nil: cách Swift biểu thị “không có giá trị”. Biến thông thường không thể là nil, nhưng biến optional thì có thể.
Hãy hình dung optional như một chiếc hộp có thể chứa thứ gì đó hoặc để trống. Trước khi dùng thứ bên trong, bạn cần kiểm tra xem có thứ gì ở đó không. Đây là một tính năng an toàn quan trọng trong Swift, giúp ngăn chương trình gặp sự cố khi thiếu giá trị ngoài dự kiến.
var score: Int? = 100
print(score) // Optional(100)
score = nil
print(score) // nilLưu ý rằng khi bạn in ra một giá trị tùy chọn có giá trị, nó hiển thị Optional(100) thay vì chỉ 100. Để truy cập giá trị thực bên trong, bạn cần bóc tách giá trị tùy chọn. Mình sẽ hướng dẫn phần này trong các bài học tiếp theo.
Thử thách
DễViết một hàm createOptional nhận một số và trả về một chuỗi thể hiện cách số đó sẽ hiển thị khi được in ra dưới dạng optional.
Quan trọng: hàm này trả về một String. Bạn đang viết văn bản trông giống như một optional, chứ không trả về một giá trị optional thực sự.
Khi bạn in ra một optional có chứa giá trị, Swift hiển thị giá trị đó theo định dạng Optional(value).
Nhắc lại cú pháp hàm: Trong Swift, hàm trả về một giá trị dùng mũi tên -> để chỉ định kiểu trả về và từ khóa return để trả về kết quả. Ví dụ:
func myFunction(param: Int) -> String {<br> return "result"<br>}
Bạn có thể tạo chuỗi trả về bằng phép nội suy chuỗi: "Optional(\(value))": phần \(value) chèn số trực tiếp vào chuỗi.
Tham số:
value(Int): Số cần bọc theo định dạng optional
Giá trị trả về: Một chuỗi theo định dạng Optional(value), trong đó value là số được cung cấp.
Ví dụ: Nếu đầu vào là 100, hãy trả về "Optional(100)"
Tự làm thử
func createOptional(value: Int) -> String {
// Trả về một String trông giống giá trị tùy chọn, chứ không phải giá trị tùy chọn thực sự
// Chèn số vào giữa cặp dấu ngoặc đơn bằng nội suy chuỗi
return "Optional()"
}
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