Kotlin with-statement como expresión

Podemos hacer

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

¿Pero hay una manera de hacer esto?

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

Para resolver un caso común donde crea un object y llama a algunos methods para inicializar su estado.

Claro, puedes usar la function .apply { } stdlib, que

Llama al bloque de function especificado con this valor como su receptor y devuelve this valor.

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

Ejemplo de uso:

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

Puedes encontrarlo entre muchos otros modismos de Kotlin aquí en la reference .

Tu segundo ejemplo también funciona; solo asegúrate de que el lambda devuelve el valor correcto (el resultado de la última expresión es el valor devuelto de la expresión with ):

 val obj = with(Obj()) { objMethod1() objMethod2() this // return 'this' because we want to assign the new instance to obj } 
  • Aplicación web Kotlin | enlace file css
  • Escribir aplicaciones de JavaScript con Kotlin
  • Kotlin en xml onClick no funciona
  • ¿Kotlin es 100% compatible con ART en Android?
  • Java Lambda para Kotlin
  • Confusión con los generics de Kotlin
  • Acceder a las funciones de extensión de Kotlin desde Java
  • Convertir pnetworkingicado kotlin en java
  • Kotlin's Iterable y Sequence se ven exactamente igual. ¿Por qué se requieren dos types?
  • Kotlin: ¿Podemos usar @Subscribe de EventBus (GreenRobot) en Kotlin?
  • ¿Cómo uso `filterValues` en la anotación de Hashmap anidada en Kotlin?