You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中Int.()是什么含义?如何为myVar变量赋值?

Kotlin中Int.() -> Int的含义与赋值方法

一、Int.()的含义

这是带接收者的函数类型,和普通的(Int) -> Int本质不同:

  • 普通的(Int) -> Int是“接收一个Int参数、返回Int的函数”,调用形式为函数名(参数);
  • 而Int.() -> Int是“以Int作为接收者、返回Int的函数”,函数内部可通过this指代这个Int实例,调用形式为接收者实例.函数名(),和调用Int的扩展函数逻辑完全一致。

简单说,这种类型就是把扩展函数的逻辑抽成了可动态赋值的变量,让你能灵活替换某个Int实例的扩展行为。

二、给myVar赋值的几种方式

1. 直接用lambda表达式赋值

lambda内部可直接用this访问接收者的Int值,甚至可以省略this(Kotlin会自动识别接收者):

lateinit var myVar: Int.() -> Int

// 写法1:显式使用this
myVar = { this + 1 }
println(5.myVar()) // 输出6

// 写法2:省略this
myVar = { this * 2 }
println(3.myVar()) // 输出6

2. 引用已定义的扩展函数

如果已经写好Int的扩展函数,直接用函数引用赋值即可:

// 先定义一个Int的扩展函数
fun Int.timesThree(): Int = this * 3

// 用函数引用赋值
myVar = Int::timesThree
println(4.myVar()) // 输出12

3. 适配普通函数

如果只有接收Int参数的普通函数,可通过lambda把接收者作为参数传入:

// 普通函数:接收Int参数,返回Int
fun square(num: Int): Int = num * num

// 包装成带接收者的lambda赋值
myVar = { square(this) }
println(5.myVar()) // 输出25

内容的提问来源于stack exchange,提问作者Vitalii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:05:30