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 } 
  • 使用netbeans8.2编译Errore java项目
  • 并发在Kotlin
  • 春季启动ThymeLeaf和Kotlin - checkbox值没有被传递给控制器​​?
  • Kotlin - “forEachIndexed”和“for”循环之间的区别
  • 智能播放和内部比较当“是”后的表情types检查
  • 我怎样才能从Kotlin的数组列表中筛选出一个值呢?
  • 全局对象声明在kotlin中
  • Kotlin,表/数组基于动态字段的条目
  • 在Kotlin中获取数字的因子
  • 你能映射/减少一个字符串到一个Int?
  • 如何调试Kotlin序列/集合
  • Kotlin language will be the best programming language for Android.