¿Lista floja en kotlin?

¿Cómo puedo lograr de manera simple una list diferida en Kotlin? (Por ejemplo, list perezosa de integers). He estado buscando en la documentation oficial, he estado buscando en Google sin get resultados consistentes. Tal vez el mejor tutorial que he encontrado es este: ingrese la descripción del enlace aquí , pero me pregunto si hay una forma más "nativa de kotlin" para hacerlo, o debo implementarlo yo mismo con el enlace que acabo de dar.

Encontré lo siguiente en el blog oficial de Kotlin, aunque no pude get un elemento, con integers [3] por ejemplo

var i = 0 integers = iterate{i++} integers[3] // does not work integers drop 3 // works 

Como correctamente observó, sequenceOf ( streamOf() en versiones anteriores) es la forma de get una secuencia de numbers vagos. A diferencia de Haskell, no existe una list perezosa en la biblioteca estándar de Kotlin, y por una buena razón: el significado principal de "list" en el mundo de Haskell y el mundo de Java es diferente. En Haskell, una list es principalmente una list enlazada, un par de cabeza y queue, y la operación principal es tomar una cabeza de dicha list, que es fácil de implementar de manera eficiente de forma perezosa. En Kotlin / Java, la list es una estructura de datos con acceso aleatorio a sus elementos, y la operación principal es get(int) , que se puede implementar de forma perezosa, por supuesto, pero su performance a menudo será sorprendente para el usuario.

Por lo tanto, Kotlin utiliza streams para la pereza, porque son buenos cuando se trata de los principales casos de uso de collections perezosas: la iteración, el filtrado, el mapeo y el acceso aleatorio es poco probable que se encuentren con mucha frecuencia.

Cuando usted, de nuevo, observa correctamente, drop permite acceder a los elementos por índice, lo que hace que las implicaciones de performance sean más explícitas en el código.

Por cierto, ¿cuál es tu caso de uso para las lists perezosas?

  • ¿Por qué Android Studio convierte algunos types primitivos de Kotlin como operador condicional / seguro?
  • Android: ¿cómo lograr setOnClickListener en Kotlin?
  • Regex no coincide en Kotlin
  • Fragmentos en las actividades comportamiento extraño
  • Funciones de Lambda con comodines en Kotlin
  • ¿Cómo convierto una matriz de cadenas a una matriz de Int en Kotlin?
  • Obtener class de list con generics, por ejemplo: Lista <Número> :: class
  • Usar reflexión para pasar y modificar una primitiva sin usar matriz
  • Android Plugin 2.2.0-alpha1 no comstack con Kotlin
  • cómo comstackr kotlin en el proyecto web eclipse maven
  • Errores de data binding en el module de la aplicación