kotlin: infix中缀函数

一,功能

在 Kotlin 中,使用 infix 关键字修饰的函数称为中缀函数,
使用时可以省略 . 和 (),允许以更自然(类似自然语言)的语法调用函数,
这种特性可以使代码更具可读性。
 

中缀函数必须满足以下条件:

  • 必须是成员函数(成员方法)或扩展函数;
  • 有且仅有一个参数,且不能有默认值;
  • 必须显式声明 infix 关键字;

Kotlin 标准库中的 to 函数是典型的中缀函数:

val map = mapOf(
    "name" to "Eileen",
    "age" to 30
)

二,例子:and/or

代码:

        //处理按钮点击事件:
        binding.button3.setOnClickListener {
            val a = true
            val b = false
            var result1: Boolean
            var result2: Boolean
            var result3: Boolean
            var result4: Boolean

            result1 = a or b // 相当于: a.or(b)
            println("result1 = $result1")

            result2 = a.or(b) // 相当于: a or b
            println("result2 = $result2")

            result3 = a and b // 相当于: a.and(b)
            println("result3 = $result3")

            result4 = a.and(b) // 相当于: a and b
            println("result4 = $result4")
        }

运行结果:

image

三,例子:

代码:

        //处理按钮点击事件
        binding.button2.setOnClickListener {
            infix fun String.addStr(str: String): String {
                return this + str
            }
            println("123".addStr("abc"))

            // 简略写法如下
            println("123" addStr "abc")
        }

运行结果:

image

四,例子:链式调用

代码:

        //处理按钮点击事件
        binding.button4.setOnClickListener {
            infix fun String.concatWith(another: String) = "$this$another"
            // 链式中缀调用
            val message = "Hello" concatWith "," concatWith "World" concatWith "!"
            println(message)
        }

运行结果:

image

posted @ 2025-09-06 08:38  刘宏缔的架构森林  阅读(23)  评论(0)    收藏  举报