DMarlon Studio

Lección 9 · 9 de 20

Listas · Dart

Guarde varios valores en orden con las listas de Dart: List<String>, posiciones desde 0, first y last, recorrerlas con for-in, contains e indexOf.

Dart · Listas en DMarlon Studio: el código del ejemplo y su salida en la terminal

Una lista guarda varios valores en orden, entre corchetes: ['Mercury', 'Venus', 'Earth', 'Mars']. El tipo `List<String>` dice que es una lista de cadenas; lo que va entre < > es el tipo de sus elementos. print(planets) la escribe entera y length dice cuántos elementos tiene.

Cada elemento tiene una posición (índice), que empieza en 0: planets[0] es Mercury y el último está en length - 1. Como pedir el primero y el último es tan frecuente, las listas tienen `first` y `last`.

Con planets[3] = 'Mars (the red one)' se cambia el elemento de esa posición. Y el bucle `for-in` recorre la lista elemento a elemento: for (var planet in planets) da cada planeta en planet, sin preocuparse de los índices.

Con var, Dart deduce el tipo: [0, 0, 1, 2] es una List<int>. El for clásico con índice también sirve para recorrerla, aquí para sumar las lunas.

Las listas responden preguntas: `contains()` dice si un valor está, `indexOf()` da su posición (o -1 si no está, como con Pluto) e `isEmpty` dice si la lista está vacía.

Código · main.dart

void main() {  // A list keeps values in order, between [ ].  List<String> planets = ['Mercury', 'Venus', 'Earth', 'Mars'];  print(planets);  print('The list has ${planets.length} planets');  // Positions start at 0, so the last one is length - 1.  print('First: ${planets[0]}, last: ${planets[planets.length - 1]}');  print('Also: ${planets.first} and ${planets.last}');  // A position can be given a new value.  planets[3] = 'Mars (the red one)';  // for-in goes through every element.  for (var planet in planets) {    print('- $planet');  }  // var works out the type: here, List<int>.  var moons = [0, 0, 1, 2];  int total = 0;  for (int i = 0; i < moons.length; i++) {    total += moons[i];  }  print('Moons in total: $total');  // contains, indexOf and isEmpty answer questions.  print('Has Venus? ${planets.contains('Venus')}');  print('Earth is at position ${planets.indexOf('Earth')}');  print('Pluto is at ${planets.indexOf('Pluto')}. Empty? ${planets.isEmpty}');}

Salida · dart run main.dart

[Mercury, Venus, Earth, Mars]
The list has 4 planets
First: Mercury, last: Mars
Also: Mercury and Mars
- Mercury
- Venus
- Earth
- Mars (the red one)
Moons in total: 3
Has Venus? true
Earth is at position 2
Pluto is at -1. Empty? false

Para recordar

  • Una lista va entre [ ]; su tipo, List<T>.
  • El primer elemento está en [0]; el último, en [length - 1].
  • first y last dan los extremos.
  • for (var x in lista) recorre los elementos.
  • indexOf da -1 si el valor no está.

Ejercicio

Cree una lista con las temperaturas de una semana, recórrala con for-in para calcular la media y escriba también la del primer y el último día.