Toán tử Elvis
Thuộc phần Kiến thức nền tảng trong hành trình Kotlin của Coddy. Bài học 15 trên 93.
Toán tử gọi an toàn rất hữu ích để tránh lỗi sập chương trình, nhưng đôi khi bạn cần một giá trị thực thay vì null. Toán tử Elvis ?: cho phép bạn cung cấp một giá trị mặc định khi biểu thức là null.
Cú pháp rất đơn giản: đặt ?: sau một biểu thức có thể nhận giá trị null, rồi đến giá trị dự phòng:
fun main() {
val name: String? = null
val displayName = name ?: "Guest"
println(displayName) // In ra: Guest
}Nếu vế trái không phải là null, giá trị đó sẽ được dùng. Nếu là null, vế phải sẽ trở thành kết quả. Cách này hoạt động hoàn hảo với các lệnh gọi an toàn:
fun main() {
val text: String? = null
val length = text?.length ?: 0
println(length) // In ra: 0
val greeting: String? = "Hello"
val greetingLength = greeting?.length ?: 0
println(greetingLength) // In ra: 5
}Toán tử này có tên như vậy vì ?: trông giống mái tóc của Elvis khi nhìn từ bên cạnh. Quan trọng hơn, toán tử này giúp bạn chuyển kiểu có thể null thành giá trị không thể null một cách gọn gàng, với giá trị mặc định hợp lý.
Thử thách
DễMột bưu kiện có nhãn theo dõi và điểm đến không bắt buộc. Phần code khởi đầu cung cấp cả hai giá trị có thể null. Dùng ?: để chọn "Pending" khi thiếu nhãn theo dõi và "Unassigned" khi thiếu điểm đến. In nhãn đã chọn, rồi đến điểm đến đã chọn, mỗi giá trị trên một dòng riêng.
Tự làm thử
fun main() {
val trackingLabel: String? = null
val destination: String? = "Harbor"
// Chọn và in ra hai giá trị cần hiển thị.
}
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
4Toán tử phần 1
Toán tử số họcToán tử moduloPhép gán kết hợpToán tử so sánhÔn tập: phép tính đơn giản7Nhập xuất cơ bản
Hàm PrintlnMẫu chuỗiĐầu vào ReadLineChuyển đổi kiểu dữ liệuÔn tập: Số năm đến khi nghỉ hưuÔn tập: Đúng hay sai10Hàm
Khai báo hàmTham số và đối sốGiá trị trả vềĐối số có tênGiá trị mặc địnhHàm chỉ gồm một biểu thứcÔn tập: hàm SigmaÔn tập: hàm kiểm tra hợp lệ3Tính có thể null
An toàn với null là gìKiểu có thể nullToán tử gọi an toànToán tử ElvisCơ bản về thử thách hàmKhẳng định không nullÔn tập: truy cập an toàn6Ra quyết định
Câu lệnh ifCâu lệnh if-elseIf dưới dạng biểu thứcBiểu thức whenWhen với khoảng giá trịÔn tập: máy tính đơn giản9Vòng lặp
Vòng lặp forVòng lặp whileVòng lặp do-whileBreakContinuePhạm vi trong vòng lặpVòng lặp lồng nhauÔn tập: giai thừaÔn tập: đầu vào động12Cơ bản về danh sách
List và MutableListTruy cập phần tửChỉnh sửa danh sáchPhương thức của ListPair và TripleÔn tập: danh sách sản phẩmÔn tập: danh sách đảo ngược15Theo dõi chi tiêu hằng ngày
Tổng quan dự ánThoát khỏi chương trìnhTự luyện tập: Playground Kotlin