Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2019-08-07:请举例说明Kotlin中with与apply函数的应用场景和区别? #116

Open
Moosphan opened this issue Aug 7, 2019 · 6 comments
Labels

Comments

@Moosphan
Copy link
Owner

Moosphan commented Aug 7, 2019

No description provided.

@Moosphan Moosphan added the Kotlin label Aug 7, 2019
@Moosphan Moosphan changed the title 2019-08-07:请举例说明Kotlin中with与apply函数的区别和应用场景? 2019-08-07:请举例说明Kotlin中with与apply函数的应用场景和区别? Aug 7, 2019
@DaveBoy
Copy link

DaveBoy commented Aug 7, 2019

看源码知区别,为了方便我只使用apply和let这两个函数,从来不用with,因为不能防空
apply:返回自身,this指代
let:返回最后一行,it指代
with类似let

@chenqi5256969
Copy link

with:with函数会把它的第一个参数装换成作为第二个参数传给它的lambda的接收者,可以通过this来访问这个接收者。with返回的是执行lambda代码的结果。
apply:apply函数基本与with一致,但是apply返回的是接收者对象。

@shuandroid
Copy link

with 不怎么使用,因为它确实不防空;
经常使用的是 runapply

  1. run 闭包返回结果是闭包的执行结果;apply 返回的是调用者本身。
  2. 使用上的差别:run 更倾向于做一些其他复杂逻辑操作,而 apply 更多的是对调用者自身配置。
  3. 大部分情况下,如果不是对调用者本身进行设置,我会使用 run

@18361237136
Copy link

apply:返回自身用this代指
let:返回最后一行 It代指
with:会把它的第一个参数装换成第二个参数传给它的接受者,通过this来访问但它不防空,所以很少用

@XJ-Up
Copy link

XJ-Up commented Feb 16, 2022

with:适用于调用同一个类的多个方法时,可以省去类名重复,直接调用;类的方法即可。

apply:具有with的功能,并且可以判空,同时返回对象本身

@AndroidJiang
Copy link

函数名 函数块内使用对象 返回值 是否扩展函数 适用场景
apply this 自身 适用于run()函数的任何场景,通产可用来在初始化一个对象实例时,操作对象属性并最终返回该对象。也可用于多个扩展函数链式调用
also it 自身 适用于let()函数的任何场景,一般可用于多个扩展函数链式调用
let it lambda最后行 适用于对象统一处理不为空的情况
run this lambda最后行 适用with()、let()函数的任何场景
with this lambda最后行 适用于调用同一个类多个方法

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

7 participants