Khoá học: Thiết lập dự án Wordpress

Nếu bạn đang tìm kiếm một cách nhanh chóng và hiệu quả để thiết lập một trang web cá nhân hoặc doanh nghiệp của mình, hãy bắt đầu với WordPress. Được coi là nền tảng quản lý nội dung (CMS) phổ biến nhất trên thế giới, WordPress cho phép bạn dễ dàng tạo ra một [...]

[Tự học Kotlin] Biểu thức when trong Kotlin

Trong bài viết này, bạn sẽ tìm hiểu về cấu trúc when trong Kotlin qua các ví dụ khác nhau.

1. Cấu trúc when trong Kotlin 

Cấu trúc when trong Kotlin có thể được coi là sự thay thế cho Câu lệnh switch trong Java. Nó đánh giá một đoạn code trong số nhiều lựa chọn thay thế.

Ví dụ: biểu thức when đơn giản

/*
Dạy Kèm IT.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: [email protected]
Fanpage: https://www.facebook.com/cafedevn
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

fun main(args: Array<String>) {

    val a = 12
    val b = 5

    println("Enter operator either +, -, * or /")
    val operator = readLine()

    val result = when (operator) {
        "+" -> a + b
        "-" -> a - b
        "*" -> a * b
        "/" -> a / b
        else -> "$operator operator is invalid operator."
    }

    println("result = $result")
}

Khi bạn chạy chương trình, kết quả sẽ là:

Enter operator either +, -, * or /
*
result = 60

Chương trình trên lấy input kiểu String từ người dùng (Hãy đọc: Nhận input kiểu String từ người dùng trong Kotlin). Giả sử, người dùng đã nhập *. Trong trường hợp này, biểu thức a * b được ước tính và giá trị được gán cho biến result.


Nếu không có điều kiện nào trong nhánh được thỏa mãn (người dùng không nhập +, -,*, hoặc /), nhánh else sẽ được đánh giá.

Trong ví dụ trên, chúng ta sử dụng when như một biểu thức. Tuy nhiên, không bắt buộc lúc nào cũng phải sử dụng when như một biểu thức. Ví dụ,

/*
Dạy Kèm IT.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: [email protected]
Fanpage: https://www.facebook.com/cafedevn
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

fun main(args: Array<String>) {

    val a = 12
    val b = 5

    println("Enter operator either +, -, * or /")
    val operator = readLine()

    when (operator) {
        "+" -> println("$a + $b = ${a + b}")
        "-" -> println("$a - $b = ${a - b}")
        "*" -> println("$a * $b = ${a * b}")
        "/" -> println("$a / $b = ${a / b}")
        else -> println("$operator is invalid")
    }
}

Khi bạn chạy chương trình, kết quả sẽ là:

Enter operator either +, -, * or /
-
12 - 5 = 7

Ở đây, when không phải là một biểu thức (giá trị trả về từ when không được gán cho bất cứ biến nào). Trong trường hợp này, nhánh else không bắt buộc.

2. Một số trường hợp ít gặp

2.1. Gộp hai hoặc nhiều điều kiện trong nhánh bằng dấu phẩy. Ví dụ,


fun main(args: Array<String>) {

    val n = -1

    when (n) {
        1, 2, 3 -> println("n is a positive integer less than 4.")
        0 -> println("n is zero")
        -1, -2 -> println("n is a negative integer greater than 3.")
    }
}

Khi bạn chạy chương trình, kết quả sẽ là:

n is a negative integer greater than 3.

2.2. Kiểm tra giá trị trong phạm vi. Ví dụ,

fun main(args: Array<String>) {

    val a = 100

    when (a) {
        in 1..10 -> println("A positive number less than 11.")
        in 10..100 -> println("A positive number between 10 and 100 (inclusive)")
    }
}

Khi bạn chạy chương trình, kết quả sẽ là:

A positive number between 10 and 100 (inclusive)

2.3. Kiểm tra xem một giá trị có nằm trong một kiểu dữ liệu nào đó không.

Để kiểm tra xem một giá trị có thuộc một kiểu dữ liệu nào đó trong thời gian chạy hay không, chúng ta có thể sử dụng toán tử is and !is. Ví dụ,

when (x) {
    is Int -> print(x + 1)
    is String -> print(x.length + 1)
    is IntArray -> print(x.sum())
}

2.4. Sử dụng các biểu thức như các nhánh chứa điều kiện. Ví dụ,

fun main(args: Array<String>) {

    val a = 11
    val n = "11"

    when (n) {
        "cat" -> println("Cat? Really?")
        12.toString() -> println("Close but not close enough.")
        a.toString() -> println("Bingo! It's eleven.")
    }
}

Khi bạn chạy chương trình, kết quả sẽ là:

Bingo! It's eleven.


Đăng ký kênh youtube để ủng hộ Dạy Kèm IT nha các bạn, Thanks you!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *