root/trunk/iterators/sample.d

Revision 13, 0.8 kB (checked in by BCS, 2 years ago)

added Witold Baryluk's iterators

Line 
1 import std.stdio;
2
3 import iterators;
4
5 class Numbers {
6     int n;
7     this (int n0) {
8         n = n0;
9     }
10
11     int iter() {
12         for (int i = 1; i <= n; i++) {
13             yield(i);
14         }
15         return 0;
16     }
17     mixin mainiter!(int, iter);
18
19     alias Iterator!(double) IV;
20
21     int iter2(IV x) {
22         for (int i = 1; i <= n; i++) {
23             x.yield(i*i);
24         }
25         return 0;
26     }
27     mixin inneriter!(double, iter2) squers;
28
29     int iter3(IV x) {
30         for (int i = 1; i <= n; i++) {
31             x.yield(i*i*i);
32         }
33         return 0;
34     }
35     mixin inneriter!(double, iter3) qubes;
36 }
37
38 int main(char[][] args) {
39     auto s = new Numbers(6);
40
41     foreach (int k; s) {
42         writef(k, " ");
43     }
44     writefln(); writefln();
45
46     foreach (int i, double k; s.squers.ic()) {
47         writef(i, ":", k, " ");
48     }
49     writefln(); writefln();
50
51     foreach (int i, double k; s.qubes.ic()) {
52         writef(i, ":", k, " ");
53     }
54     writefln(); writefln();
55
56     return 0;
57 }
Note: See TracBrowser for help on using the browser.