Menu
CoddyTech

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ý.

challenge icon

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ị.
}
quiz iconTự kiểm tra

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

Tự luyện tập: Playground Kotlin