summaryrefslogtreecommitdiff
path: root/examples/foreach.nl
blob: ef3e55ed25c3570aa687f2716b1376c09f031b9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
class person_t
{
    name: string;
    age:  int32;
};

class table_t
{
    entries: array[person_t];
    n_entries: int32;

    add (name: string, age: int32)
    {
	if (entries == null)
	    entries = new array[person_t] (200);

	p: person_t = new person_t ();

	p.name = name;
	p.age = age;

	entries[n_entries++] = p;
    }

    foreach (f: fn (p: person_t))
    {
	for (i := 0; i < n_entries; ++i)
	    f (entries[i]);
    }
};

table: table_t = new table_t ();

table.add ("Kathryn A. Baley", 49);
table.add ("Dennis Clark", 31);
table.add ("Doris R. Jones", 75);
table.add ("Steven Arcuri", 80);
table.add ("Robert Whicker", 61);
table.add ("Angelo J. Tran", 79);
table.add ("Irma Clapp", 37);

table.foreach (fn (p: person_t) {
	print p.name;
	print p.age;

	if (p.age > 50)
	    goto done;
    });

@done: