中缀函数
可读的函数调用
中缀函数 是 CoddyKit 上的免费 Kotlin Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Kotlin Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Kotlin Academy 课程共包含 4 节课。
什么是中缀函数
中缀函数可以省略点号和括号来调用:a func b。请使用 infix 关键字标记它。
infix fun Int.times2(factor: Int) = this * factor
fun main() {
println(3 times2 4)
}中缀函数的规则
中缀函数必须是成员函数或扩展函数,且必须恰好接受一个参数;该参数不能是可变参数,也不能有默认值。
infix fun Int.plusBy(other: Int) = this + other
fun main() {
println(5 plusBy 7)
}内置中缀函数
许多标准函数都是中缀函数:to(构建二元组)、and、or、shl,以及用于范围的 until、downTo 和 step。
fun main() {
val pair = "key" to 42
println(pair)
for (i in 1 until 4) print(i)
}使用 to 构建二元组
熟悉的 "a" to 1 映射语法,其实只是返回二元组的中缀 to 函数。
fun main() {
val map = mapOf(1 to "one", 2 to "two")
println(map[2])
}作为成员函数的中缀函数
中缀函数可以是成员函数,让您能够编写流畅的领域表达式。
class Money(val cents: Int) {
infix fun add(o: Money) = Money(cents + o.cents)
}
fun main() {
val total = Money(100) add Money(50)
println(total.cents)
}可读性优先
当调用读起来像一句话时,中缀函数最有价值。请选择类似动词的名称,让 a name b 自然流畅。
infix fun String.repeatedTimes(n: Int) = this.repeat(n)
fun main() {
println("ab" repeatedTimes 3)
}中缀调用的优先级
中缀调用的优先级低于算术运算,但高于比较运算。混合使用时请添加括号,以保持清晰。
infix fun Int.combine(o: Int) = this * 10 + o
fun main() {
println(1 combine 2 + 3)
}this 接收者
在中缀扩展函数中,this 是左操作数;参数是右操作数。
infix fun Int.minus2(o: Int) = this - o
fun main() {
println(10 minus2 3)
}链式调用中缀函数
中缀调用是左结合的,因此您可以将它们链式连接起来。
infix fun Int.then(o: Int) = this + o
fun main() {
println(1 then 2 then 3)
}避免过度使用中缀函数
中缀函数会省略点号和括号,对于不明显的操作,这可能会降低清晰度。请仅在这样写更易读时使用它。
infix fun Int.power(exp: Int): Int {
var r = 1
repeat(exp) { r *= this }
return r
}
fun main() {
println(2 power 5)
}一个流畅的示例
中缀函数可以让断言或构建器读起来几乎像英语句子。
infix fun String.shouldStartWith(prefix: String) =
this.startsWith(prefix)
fun main() {
println("kotlin" shouldStartWith "kot")
}快速检查
请检验您对中缀函数的理解。
回顾
您学会了中缀函数:
- 使用
infix标记,并以a func b的形式调用。 - 它必须是成员函数或扩展函数,并且只能有一个既非可变参数又没有默认值的参数。
to、until和downTo是内置中缀函数。- 仅在确实能提高可读性时使用它。
infix fun Int.add(o: Int) = this + o
fun main() {
println(4 add 6)
}用 AI 导师学习 Kotlin — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 51
- 课程
- 203
常见问题解答
「中缀函数」课时是免费的吗?
是的 — 「中缀函数」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Kotlin Academy 课程的其余内容,请升级到 CoddyKit PRO。 Kotlin Academy 课程共包含 4 节课。
「中缀函数」这节课中我会学到什么?
可读的函数调用 你通过在浏览器中直接运行的动手代码来练习 Kotlin Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Kotlin Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Kotlin Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「中缀函数」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Kotlin Academy 课中编写并运行代码吗?
能。每节 Kotlin Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。