函数类型:
函数在kotlin中作为一等公民的理解就是,
函数可以作为定义变量的类型,可以作为形参的类型,可以作为返回值参数的类型,也就是函数类型,和类一样的用法。
data class Coder(var name: String, var age: Int)
class Foo{
val oo:String = ""
var xx:()->Unit={
var a = this.oo
var b = this@Foo.oo
}
var yy:Coder.()->Coder={
var a = this
var b = this@Foo.oo
a.name
a.age
this
}
}
val a = Coder("x",18).apply {
name
}
val b = Coder("x",18).also {
it.name
}
public inline fun <T> T.apply(block: T.() -> Unit): T {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
block()
return this
}
public inline fun <T> T.also(block: (T) -> Unit): T {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
block(this)
return this
}
源码中唯一的不同就是带Receiver的可以直接block();而不带Receiver的需要block(this),这个this就是T(Coder(“x”,18))
数据加载中...