Trong bài viết này, bạn sẽ học cách sử dụng ký hiệu infix để gọi một hàm trong Kotlin (với sự trợ giúp của các ví dụ).

Trước khi bạn tìm hiểu cách tạo một hàm có ký hiệu infix, hãy tìm hiểu về hai hàm infix thường được sử dụng.

Khi bạn sử dụng hai toán tử  ||và &&, trình biên dịch sẽ tìm hai hàm tương ứng là hàm or và hàm and, và gọi sau đó sẽ gọi hai hàm này một cách cơ bản.

Hai hàm này có hỗ trợ ký hiệu infix.

Ví dụ: Hàm or & and trong Kotlin

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

fun main(args: Array<String>) {
    val a = true
    val b = false
    var result: Boolean

    result = a or b // a.or(b)
    println("result = $result")

    result = a and b // a.and(b)
    println("result = $result")
}

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

result = true
result = false

Trong chương trình trên, ta sử dụng a or b thay vì sử dụng a.or(b)và ta cũng đã dùng a and b thay vì dùng a.and(b). Có thể làm như vây bởi vì hai hàm này hỗ trợ ký hiệu infix.

Làm thế nào để tạo một hàm với ký hiệu infix?

Bạn có thể gọi một hàm có sử dụng kí hiệu infix trong Kotlin nếu hàm đó đạt các tiêu chí sau:

  • là một hàm thành viên (hoặc một hàm mở rộng ) .
  • chỉ có một tham số duy nhất.
  • được đánh dấu bằng từ khóa infix.

Ví dụ: Hàm do người dùng định nghĩa với ký hiệu Infix

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

class Structure() {

    infix fun createPyramid(rows: Int) {
        var k = 0
        for (i in 1..rows) {
            k = 0
            for (space in 1..rows-i) {
                print("  ")
            }
            while (k != 2*i-1) {
                print("* ")
                ++k
            }
            println()
        }
    }
}

fun main(args: Array<String>) {
    val p = Structure()
    p createPyramid 4       // p.createPyramid(4)
}

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

      * 
    * * * 
  * * * * * 
* * * * * * * 

Ở đây, hàm createPyramid() là một hàm infix tạo ra một cấu trúc kim tự tháp. Đây là một hàm thành viên của class Structure, chỉ chấp nhận một tham số thuộc kiểu dữ liệu Int và hàm này bắt đầu bằng từ khóa infix.

Số lượng hàng của hình kim tự tháp phụ thuộc vào đối số được truyền cho hàm.

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!