요약 - 제네릭 저장소
Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 69번째.
챌린지
쉬움컬렉션과 제네릭에 대해 배운 모든 것을 결합하여 제네릭 저장소 시스템을 만들어 봅시다! 어떤 타입의 아이템이든 저장하고, 검색하고, for-in 루프를 사용하여 반복할 수 있는 Storage<T> 클래스를 만들 것입니다.
코드를 두 개의 파일로 구성합니다:
storage.dart: 두 개의 클래스로 제네릭 저장소 시스템을 만듭니다:- 저장된 아이템에 대한 반복을 가능하게 하기 위해
Iterator<T>를 구현하는StorageIterator<T>클래스 - 다음 기능을 갖추고
Iterable<T>를 상속받는Storage<T>클래스:- 내부적으로 아이템을 보관할 프라이빗 리스트
- 새 아이템을 저장하는
add(T item)메서드 - 주어진 인덱스의 아이템을 반환하는
getAt(int index)메서드 - 저장된 아이템의 개수를 반환하는
count게터(getter) - 저장된 아이템에 대한
StorageIterator를 반환하는iterator게터(getter)
- 저장된 아이템에 대한 반복을 가능하게 하기 위해
main.dart: 저장소 파일을 임포트하고 다양한 타입을 사용하여 제네릭 저장소를 시연합니다:Storage<String>을 생성하고 세 개의 도시 이름을 추가합니다:'Paris','Tokyo','Sydney'- 아이템의 개수를 출력합니다
- 인덱스 1에 있는 아이템을 출력합니다
for-in루프를 사용하여 각 도시를 개별 줄에 출력합니다- 빈 줄을 출력합니다
Storage<int>를 생성하고 네 개의 숫자100,200,300,400을 추가합니다where메서드를 사용하여 150보다 큰 값을 필터링한 다음, 결과 리스트를 출력합니다
여러분의 저장소 시스템은 완전한 타입 안전성을 유지하면서 모든 타입과 원활하게 작동해야 합니다. Iterable을 상속받기 때문에 where, map, fold와 같은 강력한 메서드들을 자동으로 사용할 수 있게 됩니다!
예상 출력:
Count: 3
Item at 1: Tokyo
Paris
Tokyo
Sydney
[200, 300, 400]직접 해보기
import 'storage.dart';
void main() {
// TODO: 도시를 위한 Storage<String> 생성
// 세 개의 도시 추가: 'Paris', 'Tokyo', 'Sydney'
// TODO: 아이템 개수 출력 (형식: "Count: X")
// TODO: 인덱스 1의 아이템 출력 (형식: "Item at 1: X")
// TODO: for-in 루프를 사용하여 각 도시를 개별 줄에 출력
// TODO: 빈 줄 출력
print('');
// TODO: 숫자를 위한 Storage<int> 생성
// 네 개의 숫자 추가: 100, 200, 300, 400
// TODO: where 메서드를 사용하여 150보다 큰 값 필터링
// 그런 다음 toList()를 사용하여 결과 리스트 출력
}