Cómo devolver varios elementos de la colección?

A.Rost:

En la lista tengo que sustituir cada elemento con la suma de este elemento y todos los anteriores. El primer elemento no es necesario para el cambio. Ejemplo: La lista (1.0, 2.0, 3.0, 4.0) deben ser convertidos (1.0, 3.0, 6.0, 10.0). Busco el más concisa y de manera correcta.

Estaba buscando en Google desde hace mucho tiempo y no pude encontrar ninguna información útil con respecto a la conversión de un elemento por la suma de las anteriores. También no pude encontrar la función requerida en la biblioteca estándar en Kotlinlang.org. Por favor, ayuda a resolver este problema.

fun accumulate(list: MutableList<Double>): MutableList<Double> {
    if (list.isEmpty()) return list
    else for (i in 0 until list.size) {
        if (i == list.indexOf(list.first())) list[i] = list.first()
        else list[i] = list.sumByDouble { it } // here's my problem
    }
    return list
}
Marko Topolnik:

Usted tiene que utilizar una variable que almacena la suma en ejecución.

fun accumulate(list: MutableList<Double>): MutableList<Double> {
    var runningSum = 0.0
    list.indices.forEach { i ->
        runningSum += list[i]
        list[i] = runningSum
    }
    return list
}

Tenga en cuenta que una lista vacía no es un caso especial para este código.

Si prefiere hacerlo de la manera FP y no destructiva transformar la lista, puede escribir lo siguiente:

fun accumulate(list: List<Double>): List<Double> {
    var runningSum = 0.0
    return list.map {
        runningSum += it
        runningSum
    }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=200448&siteId=1
Recomendado
Clasificación