Menu
Coddy logo textTech

Powtórka — generyczne przechowywanie danych

Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 69 z 110.

challenge icon

Wyzwanie

Łatwy

Stwórzmy generyczny system przechowywania, który łączy wszystko, czego nauczyłeś się o kolekcjach i typach generycznych! Utworzysz klasę Storage<T>, która może przechowywać elementy dowolnego typu, pobierać je i umożliwiać iterowanie po nich za pomocą pętli for-in.

Podzielisz kod na dwa pliki:

  • storage.dart: Utwórz generyczny system przechowywania składający się z dwóch klas:
    • Klasę StorageIterator<T>, która implementuje Iterator<T>, aby umożliwić iterowanie po przechowywanych elementach
    • Klasę Storage<T>, która rozszerza Iterable<T> i ma następujące możliwości:
      • Prywatną listę do wewnętrznego przechowywania elementów
      • Metodę add(T item) do przechowywania nowego elementu
      • Metodę getAt(int index), która zwraca element o podanym indeksie
      • Getter count, który zwraca liczbę przechowywanych elementów
      • Getter iterator, który zwraca obiekt StorageIterator dla przechowywanych elementów
  • main.dart: Zaimportuj plik z systemem przechowywania i pokaż jego działanie z różnymi typami:
    • Utwórz obiekt Storage<String> i dodaj trzy nazwy miast: 'Paris', 'Tokyo', 'Sydney'
    • Wypisz liczbę elementów
    • Wypisz element o indeksie 1
    • Użyj pętli for-in, aby wypisać każde miasto w osobnym wierszu
    • Wypisz pusty wiersz
    • Utwórz obiekt Storage<int> i dodaj cztery liczby: 100, 200, 300, 400
    • Użyj metody where, aby odfiltrować wartości większe niż 150, a następnie wypisz wynikową listę

Twój system przechowywania powinien działać bezproblemowo z dowolnym typem, zachowując pełne bezpieczeństwo typów. Ponieważ rozszerza Iterable, automatycznie zyskuje dostęp do zaawansowanych metod, takich jak where, map i fold!

Oczekiwany wynik:

Count: 3
Item at 1: Tokyo
Paris
Tokyo
Sydney

[200, 300, 400]

Spróbuj swoich sił

import 'storage.dart';

void main() {
  // TODO: Utwórz Storage<String> dla miast
  // Dodaj trzy miasta: 'Paris', 'Tokyo', 'Sydney'

  // TODO: Wypisz liczbę elementów (format: "Count: X")

  // TODO: Wypisz element o indeksie 1 (format: "Item at 1: X")

  // TODO: Użyj pętli for-in, aby wypisać każde miasto w osobnym wierszu

  // TODO: Wypisz pusty wiersz
  print('');

  // TODO: Utwórz Storage<int> dla liczb
  // Dodaj cztery liczby: 100, 200, 300, 400

  // TODO: Użyj metody where, aby odfiltrować wartości większe niż 150
  // Następnie wypisz wynikową listę, używając toList()
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Dart online