Lista clara y agregaTodo en statement única Kotlin

¿Hay algún método en kotlin que reemplace debajo de dos líneas en una? Sé que puedo crear una function de extensión, pero estoy ansioso por saber si ya existe en kotlin. Algo así como listOfChecklist.clearAndAddAll() Gracias de antemano.

  listOfChecklist.clear() listOfChecklist.addAll(newList) 

Esto es lo que estoy haciendo ahora manualmente usando la function de extensión. Pero espero que haya una mejor solución. Gracias por adelantado.

 fun <E> MutableCollection<E>.clearAndAddAll(replace: MutableSet<E>) { clear() addAll(replace) } 

No es posible hacer esto. Una forma idiomática de resolver su caso se usaría with si lo desea. Sin embargo, no veo una gran ventaja aquí.

 val list: MutableList<String> = mutableListOf() with(list){ clear() addAll(arrayListOf()) } 

Mi respuesta será bastante filosófica, así que aquí están mis pensamientos:

  1. Si realmente siente la necesidad de fusionar estas 2 operaciones en una línea de código, sugiere que use esto muy a menudo.

  2. Si usa este patrón de layout muy a menudo, me parece que hay algo bastante incorrecto en su layout general de su aplicación / class y aquí estoy totalmente de acuerdo con el comentario "Espero que no haya tal método" de @miensol.

  3. Si no lo usa a menudo, creo que dejarlo en 2 líneas de código lo hace mucho más legible.

  4. Borrar el "listOfChecklist" tiene sentido solo si "newlist" también se borra en algún punto, de lo contrario, puede mantener la reference como: "listOfChecklist = newlist" y boom! Ya terminaste …

  5. Si utiliza mucho las lists mutables, que se borran y sus elementos se copyn entre sí, me parece una sobreutilización del estado mutable, lo que hace que su código sea difícil de razonar. Sugeriría que mires algunos principios básicos de functional programming que te ayudarán a deshacerte completamente de las preocupaciones de clear / addAll :-).

  6. No soy un experto en performance, pero para la mayoría de los casos de uso, realmente no veo un beneficio razonable de reutilizar una list existente en lugar de simplemente clonarla (si realmente necesita conservar los elementos por alguna razón) y hablar de el performance en sí mismo, la JVM casi siempre hace un buen trabajo de todos modos.

Conclusión: Lo que sugeriría es mantenerlo en 2 líneas si realmente lo necesita o diseñar su código de manera que evite por completo la necesidad de borrar / agregar Todo. De lo contrario, puede ir con su function de extensión o lo que sea que lo haga sentir feliz.

Puede simplemente crear una nueva instancia desde su newList .

 listOfChecklist = ArrayList(newlist) 
  • volver a habilitar la conversión de intellij java a kotlin
  • Por qué ejecutar testings de kotlin tan lento en AndroidStudio 3.0
  • La vista es nula en onCreateView android
  • El parámetro de tipo Force es invariante en el sitio de uso cuando es covariante en el sitio de statement
  • Cómo clonar o copyr una list en kotlin
  • eclipse organiza import no funciona con files kotlin
  • No puedo excluir MongoAutoConfiguration en Springboot-Kotlin (MongoSocketOpenException)
  • Kotlin: ¿Cómo puedo evitar el autoboxing (basura) en las properties delegadas?
  • Pruebas de Espresso con Kotlin
  • ¿Cómo resolver la ambigüedad de sobrecarga en las references de methods?
  • ¿Cómo agregar una biblioteca de código fuente a IntelliJ (por ejemplo, de Github)?