infix用法示例
什么是 infix 函数?
infix 关键字可以让 单参数的函数 以 更自然的语法 书写,使代码更易读。
 你可以把它理解为 一种特殊的调用方式,不需要 . 和 (),让代码像 自然语言 一样流畅。
要使用 infix,需要满足 三个条件:
- 必须是成员函数或扩展函数(它必须属于某个类或某种类型)。
 - 必须只有且只能有一个参数(如果有多个参数,就不能用 
infix)。 - ⭐⭐⭐⭐⭐⭐调用时可以省略 
.和()(但仍然可以用.调用)。 
简单示例 1:数字比较
不使用 infix
1  | fun isBigger(a: Int, b: Int): Boolean {  | 
这个函数 isBigger(10, 5) 可读性一般,我们可以用 infix 改写它。
使用 infix
1  | infix fun Int.isBiggerThan(other: Int): Boolean {  | 
✅ 10 isBiggerThan 5 读起来就像 自然语言,比 isBigger(10, 5) 更易懂。
简单示例 2:创建 “名字-值” 对
普通方式
1  | fun pair(key: String, value: String): Pair<String, String> {  | 
使用 infix
1  | infix fun String.with(value: String): Pair<String, String> {  | 
✅ "name" with "Alice" 读起来更像 自然语言,比 pair("name", "Alice") 更直观。
简单示例 3:自定义数学运算
普通加法
1  | class Point(val x: Int, val y: Int) {  | 
使用 infix
1  | class Point(val x: Int, val y: Int) {  | 
✅ p1 add p2 比 p1.add(p2) 更像数学公式,可读性更强。
错误示范
1  | class Point(val x: Int, val y: Int) {  | 
 不能编译,是因为 infix 函数不能在类内部对自身类型(Point)扩展。
总结
infix让代码更像自然语言,增强可读性。- 只能用于:
- 类的成员函数(如 
Point里的add)。 - 扩展函数(如 
String.with())。 - 且只接受一个参数。
 
 - 类的成员函数(如 
 - 调用时可以省略 
.和(),让代码更流畅。 
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.