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) 
  • ¿Por qué no está vacío en las collections de Kotlin una propiedad?
  • Actualizando la Vista de Reciclador y Creando Parcelables para la rotation de la pantalla (¿Cuál es el mejor curso de acción aquí?)
  • rx-java2 Schedulers.io () steel invoca el método de mainThread
  • ¿Cómo superar el error "la misma firma JVM" al implementar una interfaz Java?
  • Tipo de unión entre Any? y Unidad
  • ¿Es posible devolver el mismo tipo que el parámetro de tipo en la instrucción when
  • El valor de retorno de las funciones de Kotlin se guarda en firebase
  • Recycler View no se desplaza suavemente
  • Manera fácil de mapear models de datos a models de dominio
  • ¿Cómo pasar el token JWT de una actividad a otra?
  • Mostrar cambios de altura de los artículos cuando se establece la image del artículo