回顾:泛型存储
本课属于 Coddy Dart 学习旅程的“面向对象编程”单元。第 69 课,共 110 课。
挑战
简单让我们构建一个泛型存储系统,把你学过的集合和泛型知识结合起来!你将创建一个 Storage<T> 类,用来存储任意类型的项、获取这些项,并通过 for-in 循环遍历它们。
你会把代码分成两个文件:
storage.dart:创建包含两个类的泛型存储系统:- 创建一个
StorageIterator<T>类,实现Iterator<T>,以便遍历存储的项 - 创建一个
Storage<T>类,继承Iterable<T>,并具备以下功能:- 使用私有列表在内部保存项
- 提供一个
add(T item)方法,用于存储新项 - 提供一个
getAt(int index)方法,返回给定索引处的项 - 提供一个
countgetter,返回存储项的数量 - 提供一个
iteratorgetter,返回用于遍历所存储项的StorageIterator
- 创建一个
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() 打印结果列表
}
面向对象编程中的所有课
自己练习: Dart 在线编译器