Kotlin以声明作为expression

我们可以做的

val obj = Obj() with (obj) { objMethod1() objMethod2() } 

但有没有办法做到这一点?

 val obj = with(Obj()) { objMethod1() objMethod2() } 

为了解决一个常见的情况,你创建一个对象并调用它的一些方法来初始化它的状态。

2 Solutions collect form web for “Kotlin以声明作为expression”

当然,你可以使用.apply { } stdlib函数

使用this值作为接收方调用指定的function并返回this值。

 public inline fun  T.apply(block: T.() -> Unit): T { block(); return this } 

用法示例:

 val obj = Obj().apply { objMethod1() objMethod2() } 

你可以在这里参考许多其他的Kotlin成语。

你的第二个例子也可以工作 – 只要确保lambda返回正确的值(最后一个expression式的结果是withexpression式的返回值):

 val obj = with(Obj()) { objMethod1() objMethod2() this // return 'this' because we want to assign the new instance to obj } 
  • 删除在Kotlin中如何工作?
  • Kotlin用集合中的lastOrNull()替换isEmpty()和last()
  • 在Kotlin中导入嵌套的对象/对象函数
  • Kotlin从Recyclerview新的片段
  • Kotlin / Android:返回可以从'when'
  • Kotlin中generics类的用法
  • Android上的Kotlin:将光标映射到列表
  • 二进制转换Int到浮点在Kotlin
  • 添加int和int? 在Kotlin
  • 在Kotlin中使用数据类的特征?
  • Chromecast - 投射对话没有影子,无法从外界取消
  • Kotlin language will be the best programming language for Android.