Introducció
En Dart, un iterable és una col·lecció d'elements que es poden recórrer un per un. Els iterables són fonamentals per treballar amb col·leccions de dades, ja que permeten accedir i manipular elements de manera seqüencial. En aquest tema, aprendrem què són els iterables, com utilitzar-los i com crear els nostres propis iterables personalitzats.
Conceptes Clau
- Iterable: Una col·lecció que es pot recórrer.
- Iterator: Un objecte que permet recórrer els elements d'un iterable.
- for-in loop: Una estructura de control que permet recórrer iterables de manera senzilla.
Utilització d'Iterables
Iterables Predefinits
Dart proporciona diverses col·leccions que implementen la interfície Iterable, com ara List, Set i Map. Aquests iterables es poden recórrer utilitzant un bucle for-in.
La Interfície Iterable
La interfície Iterable defineix un mètode iterator que retorna un objecte de tipus Iterator. Aquest objecte té dos mètodes principals:
moveNext(): Mou el cursor al següent element i retornatruesi hi ha un element disponible.current: Retorna l'element actual.
void main() {
List<int> numbers = [1, 2, 3, 4, 5];
Iterator<int> iterator = numbers.iterator;
while (iterator.moveNext()) {
print(iterator.current);
}
}Creació d'Iterables Personalitzats
Podem crear els nostres propis iterables implementant la interfície Iterable i proporcionant un Iterator personalitzat.
Exemple: Iterable Personalitzat
class RangeIterable implements Iterable<int> {
final int start;
final int end;
RangeIterable(this.start, this.end);
@override
Iterator<int> get iterator => RangeIterator(start, end);
}
class RangeIterator implements Iterator<int> {
int current;
final int end;
bool _firstMove = true;
RangeIterator(int start, this.end) : current = start - 1;
@override
bool moveNext() {
if (_firstMove) {
_firstMove = false;
current++;
} else {
current++;
}
return current < end;
}
}
void main() {
RangeIterable range = RangeIterable(1, 5);
for (int number in range) {
print(number);
}
}Explicació del Codi
- RangeIterable: Implementa la interfície
Iterablei defineix els límits de l'interval (startiend). - RangeIterator: Implementa la interfície
Iteratori gestiona el recorregut dels elements dins de l'interval. - moveNext(): Mou el cursor al següent element i retorna
truesi hi ha més elements dins de l'interval. - current: Retorna l'element actual.
Exercicis Pràctics
Exercici 1: Recórrer una Llista
Escriu un programa que recorri una llista de noms i imprimeixi cada nom en una línia nova.
void main() {
List<String> names = ['Anna', 'Bernat', 'Carla', 'David'];
// Solució
for (String name in names) {
print(name);
}
}Exercici 2: Crear un Iterable Personalitzat
Crea un iterable personalitzat que generi els nombres parells dins d'un interval donat.
class EvenNumbersIterable implements Iterable<int> {
final int start;
final int end;
EvenNumbersIterable(this.start, this.end);
@override
Iterator<int> get iterator => EvenNumbersIterator(start, end);
}
class EvenNumbersIterator implements Iterator<int> {
int current;
final int end;
bool _firstMove = true;
EvenNumbersIterator(int start, this.end) : current = start - 2;
@override
bool moveNext() {
if (_firstMove) {
_firstMove = false;
current += 2;
} else {
current += 2;
}
return current < end;
}
}
void main() {
EvenNumbersIterable evens = EvenNumbersIterable(0, 10);
for (int number in evens) {
print(number);
}
}Resum
En aquest tema, hem après què són els iterables i com utilitzar-los en Dart. Hem vist com recórrer col·leccions predefinides com List i Set, i hem après a crear els nostres propis iterables personalitzats. Els iterables són una eina poderosa per treballar amb col·leccions de dades de manera eficient i flexible. En el proper mòdul, explorarem la programació orientada a objectes en Dart.
Curs de Programació en Dart
Mòdul 1: Introducció a Dart
- Introducció a Dart
- Configuració de l'Entorn de Desenvolupament
- El Teu Primer Programa en Dart
- Sintaxi i Estructura Bàsica
Mòdul 2: Conceptes Bàsics de Dart
Mòdul 3: Col·leccions
Mòdul 4: Programació Orientada a Objectes en Dart
Mòdul 5: Funcionalitats Avançades de Dart
Mòdul 6: Gestió d'Errors i Depuració
Mòdul 7: Paquets i Biblioteques de Dart
Mòdul 8: Dart per a Web i Mòbil
- Introducció a Flutter
- Construcció d'una Aplicació Simple amb Flutter
- Dart per al Desenvolupament Web
