但是,某些委托属性不会以任何方式运用 KProperty。关于他们来说,在 $$delegatedProperties 中生成对象是次优的。Kotlin 1.4 版本将优化这种状况。假设委托属性运算符是 inline,并且未运用 KProperty 参数,则不会生成相应的反射对象。最出色的示例是 lazy 属性。lazy 属性的 getValue 完成是 inline,并且不运用 KProperty 参数:
inline operator fun <T> Lazy<T>.getValue (thisRef: Any?, property: KProperty<*>): T = value
从 Kotlin 1.4 末尾,当定义 lazy属性时,将不会生成相应的 KProperty实例。假设在类中运用的独一委托属性是 lazy属性(以及契合此优化的其他属性),则不会为类生成整个 $$delegatedProperties 数组:
class MyOtherClass {
val lazyProp by lazy { 42 }
}
>>> javap MyOtherClass
public final class MyOtherClass {
// no longer generated:
static final kotlin.reflect.KProperty[] $$delegatedProperties;
...
}
尾随逗号
可以在参数列表中的最后一个参数之后放置一个附加的尾随逗号,然后交流行或添加新参数,而不必添加或删除丧失的逗号。
【编辑引荐】
TIOBE 1 月榜单:C 取得“2019 年度编程言语”称号
这5个Python特性,懊悔没早知道
腾讯大佬通知你,写Python究竟用什么IDE适宜
现代编程言语哪家强?2020年,你或许应该了解这7门编程言语
快来看看,你正在运用的编程言语盛行排行榜!别被时代淘汰了_IT技术周刊第610期
(责任编辑:admin)