Iterable
의 하위 클래스로 배열의 모든 원소를 메모리에 올려두고 사용합니다.List
는 고정 크기 리스트와 동적 크기 리스트가 있습니다.2의 1000승 크기의 배열은 너무 커서 메모리에 한 번에 생성할 수 없습니다. List
는 메모리 부족으로 실행할 수 없지만, Iterable
은 에러가 나지 않습니다.
Iterable<int> generateNumbers() sync* {
int number = 1;
while (true) {
yield number;
number++;
}
}
void main() {
var bigIterable = generateNumbers().take(1000);
// Iterable은 필요한 시점에 요소를 생성하므로 메모리 효율적입니다.
print(bigIterable.take(10).toList()); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
List
대신 Iterable
을 사용하여 메모리 사용을 최적화할 수 있습니다.Iterable
을 사용하면 불변성을 유지하며 요소를 생성할 수 있습니다. 이는 상태 관리에 유리합니다.