Kotlin replace isEmpty () y last () con lastOrNull () dentro de una Collection

Me gustaría utilizar algo como (código a continuación), pero creo que debe haber una solución más agradable con el uso de lastOrNull() lugar de usar isEmpty y last()

 data class Entry(val x: Float, val y: Float) 

 var entries: MutableList<Entry> = ArrayList() if(some) { entries.add(Entry(100f, 200f) } val foo = (if (entries.isEmpty()) 0f else entries.last().y) + 100f 

¿Hay alguna forma mejor como entries.lastOrNull()?.y if null 0f ?

puede usar Kotlin elvis operator ?: , por ejemplo:

 // if the expression `entries.lastOrNull()?.y` is null then return `0f` // v val lastY = entries.lastOrNull()?.y ?: 0f 

para la expresión en su código anterior, puede usar safe-call ?.let / ?.run para hacer su código más claramente, por ejemplo:

 //val foo = if (entries.isEmpty()) 0f else entries.last().y + 100f else 100f // if no Entry in List return `0F` ---v val foo = entries.lastOrNull()?.run { y + 100 } ?: 0F // ^--- otherwise make the last.y + 100 

Si he logrado entenderlo correctamente, esto hará el trabajo:

 val foo = if (entries.isEmpty()) 0f else entries.lastOrNull()?.y ?: 0f + 100f 
  • Lista de sorting basada en el order de otra list
  • Kotlin prepone elemento
  • Obtener los elementos de una list de lists con la API de transmisión de Java en Kotlin
  • ¿Qué es una forma concisa de copyr profundamente una MutableList 2D?