这个表达式看起来不像一个接受Int
并返回Int
的lambda
lateinit var myVar: Int.() -> Int
Int.()
在Kotlin 是什么意思?如何将某物赋给myVar
?
这个表达式看起来不像一个接受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对象(在点之前传递的对象).