这个表达式看起来不像一个接受Int并返回Int的lambda

lateinit var myVar: Int.() -> Int

Int.()在Kotlin 是什么意思?如何将某物赋给myVar

推荐答案

Kotlin 支持extension functions的概念.

Foo.(Bar) -> Baz这样的类型定义描述了一个函数类型,它将类型Foo的对象作为其receiver,接受类型Bar的参数,并返回类型Baz的对象.

这允许将扩展综合添加到您无法控制的类型.例如,您可以将扩展添加到String并调用它,就像它是在类本身上定义的一样.

fun String.hasEvenLength(): Boolean = this.size % 2 == 0

val result = "foo".hasEvenLength()

扩展函数中的this关键字对应于Receiver对象(在点之前传递的对象).

Kotlin相关问答推荐

用浮点数或十进制数给出错误答案的阶乘计算

何时使用figureEach

Spring Boot Kotlin 数据类未使用 REST 控制器中的默认值初始化

如何从 Period.between() 返回的字符串中提取信息? (Kotlin )

按钮无法在 Android Studio 上打开新活动

在 Kotlin 中 import 如何找到文件路径?

如何缩短 MaterialTheme.colors.primary?

验证构造函数中的值组合

Kotlin 1.2.21 + SimpleXml 2.3.0 - consume List error (must mark set get method)

Kotlin 具体化的泛型不会按计划保持类型

哪里可以找到aapt2日志(log)?

Jetpack Compose State:修改类属性

Kotlin的web-framework框架

使用 Kotlin 创建自定义 Dagger 2 范围

在 Kotlin 中创建 Spinner 时,如何在 Fragment 中的旋转屏幕上修复指定为非空的参数为空?

如何使用协调器布局和行为在CardView上完成此动画?

修改扩展函数中的this

Kotlin扩展函数与成员函数?

kotlin中密封类和密封接口的区别是什么

访问Kotlin中的属性委托