Kotlin中的with函数

with函数是一个非常有用的函数,它可以简化很多代码量。

inline fun <T> with(t: T, body: T.() -> Unit) { t.body() }

with函数接收一个 T 类型的对象和一个被作为扩展函数的函数。这个方法主要是让这个t对象去执行body函数。因为第二个参数是一个函数,所以第二个函数可以放在圆括号外边。我们可以在第二个参数里面创建代码块,在这个代码块里可以使用 this和直接访问public的方法和属性

例如java中的一段代码

TextView text=(TextView)findViewById(R.id.tv_text)
text.setText("hahaha")
text.setTextSize(23)

Kotlin代码

with(tv_text){
text="hahaha"
textSize=23
}

上面两段代码实现的功能是一样的,kotlin的代码更加简洁。
with函数中的参数是一个对象,我们可以带方法中直接引用对象的公有属性或者公有方法,而不用使用方法名。
如果一段代码你需要多次使用一个对象,那么你就可以使用with函数。

内联函数
内联函数与普通的函数有点不同。一个内联函数会在编译的时候被替换
掉,而不是真正的方法调用。这在一些情况下可以减少内存分配和运行时
开销。举个例子,如果我们有一个函数,只接收一个函数作为它的参数。
如果是一个普通的函数,内部会创建一个含有那个函数的对象。另一方
面,内联函数会把我们调用这个函数的地方替换掉,所以它不需要为此生
成一个内部的对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容