Kotlin疑点难点
with
本书中我们大量讲了这个函数。 with 接收一个对象和一个函数,这个函数会作为
这个对象的扩展函数执行。这表示我们根据推断可以在函数内使用 this 。
1 | inline fun <T, R> with(receiver: T, f: T.() -> R): R = receiver.f() |
泛型在这里也是以相同的方式运行: T 代表接收类型, R 代表结果。如你所见,
函数通过 f: T.() -> R 声明被定义成了扩展函数。这就是为什么我们可以调
用 receiver.f() 。
kotlin-for-android-developers-zh p188
构造器
下面 3 种声明都是等效的 (《kotlin 实战》p81)
实现 1
1 | class User constructor(_nickname:String){ |
实现 2
1 | class User(_nickname:String){ |
实现 3
1 | class User(val nickname: String) // “val” 意味着相应的属性会用构造方法的参数来初始化 |