Kotlin学习(二):apply vs with

apply vs with

Kotlin中有很多优秀的特性,我们可以利用这些特性在Kotlin中编写更好的应用程序。在所有这些特性中,apply和with是重要的特性。我们必须知道什么时候用哪一个。

何时使用“apply”,何时使用“with”?

根据定义,apply接受一个函数,并将其作用域设置为调用apply的对象的作用域。这意味着不需要显式引用对象。Apply()当然不仅仅是简单地设置属性。它是一个转换函数,能够在返回之前评估复杂的逻辑。最后,函数只返回相同的对象(添加了更改),因此可以在同一行代码中继续使用它。

让我们看看“apply”和“with”之间的区别。

主要有两个区别:

  • apply接受一个实例作为接收器,而with要求将一个实例作为参数传递。在这两种情况下,实例都将成为一个块内的实例。
  • apply返回接收器,with返回其块中最后一个表达式的结果。

通常在需要对对象执行操作并返回时使用apply。当需要对某个对象执行某些操作并返回可用于的其他对象时。

Example of apply
1
2
3
4
5
6
fun getDeveloper(): Developer {
return Developer().apply {
developerName = "Amit Shekhar"
developerAge = 22
}
}
Example of with
1
2
3
4
5
fun getPersonFromDeveloper(developer: Developer): Person {
return with(developer) {
Person(developerName, developerAge)
}
}
龙颜大悦,朕要赏赐!