Menu
CoddyTech

If dưới dạng biểu thức

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 31 trên 93.

Bạn đã thấy cách dùng if ngay trong dòng để chọn giữa hai giá trị. Nhưng khi các khối if-else của bạn chứa nhiều câu lệnh (statement), bạn vẫn có thể dùng toàn bộ cấu trúc này như một biểu thức (expression): biểu thức cuối cùng trong mỗi nhánh sẽ trở thành giá trị trả về.

fun main() {
    val score = 85
    
    val message = if (score >= 60) {
        val grade = "passing"
        "You got a $grade score!"
    } else {
        val grade = "failing"
        "You got a $grade score."
    }
    
    println(message)  // In ra: You got a passing score!
}

Mỗi nhánh có thể chứa nhiều câu lệnh, nhưng biểu thức cuối cùng trong nhánh sẽ được trả về và gán cho biến. Trong trường hợp này, chuỗi ở dòng cuối cùng của mỗi khối lệnh trở thành giá trị của message.

Cách này cũng áp dụng với các chuỗi else if:

fun main() {
    val temperature = 25
    
    val description = if (temperature > 30) {
        "Hot"
    } else if (temperature > 20) {
        "Warm"
    } else {
        "Cool"
    }
    
    println(description)  // In ra: Warm
}

Khi dùng if như một biểu thức, cần có nhánh else: Kotlin cần đảm bảo một giá trị được trả về bất kể điều kiện nào đúng.

challenge icon

Thử thách

Dễ

Bạn được cung cấp biến sau:

val hours = 45

Dùng biểu thức if với nhiều câu lệnh trong mỗi nhánh để xác định trạng thái lương của nhân viên và tạo thông báo.

Tạo biến payStatus bằng biểu thức if:

  • Nếu hours lớn hơn 40:
    • Tạo biến overtime có giá trị bằng hours - 40
    • Biểu thức cuối cùng phải là "Overtime: $overtime extra hours"
  • Nếu không:
    • Tạo biến remaining có giá trị bằng 40 - hours
    • Biểu thức cuối cùng phải là "Regular: $remaining hours until overtime"

In ra giá trị của payStatus.

Tự làm thử

fun main() {
    val hours = 45
    
    // TODO: Viết code của bạn bên dưới
    // Tạo biến (variable) payStatus bằng biểu thức (expression) if
    // Nếu hours > 40: tạo biến overtime và trả về "Overtime: $overtime extra hours"
    // Nếu không: tạo biến remaining và trả về "Regular: $remaining hours until overtime"
    
    
}
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