Add range example

This commit is contained in:
Andrew Morris
2023-06-01 09:40:38 +10:00
parent 76f78eb8ec
commit d05eaf83a1

View File

@@ -0,0 +1,38 @@
export default function main() {
return [...new Range(0, 10)];
}
class Range {
start: number;
end: number;
constructor(start: number, end: number) {
this.start = start;
this.end = end;
}
[Symbol.iterator]() {
return new RangeIterator(this.start, this.end);
}
}
class RangeIterator {
value: number;
end: number;
constructor(value: number, end: number) {
this.value = value;
this.end = end;
}
next() {
const done = this.value >= this.end;
const res = { value: this.value, done };
if (!done) {
this.value++;
}
return res;
}
}