[ create a new paste ] login | about

Link: http://codepad.org/WXRB6Mcb    [ raw code | output | fork ]

GiM - D, pasted on Apr 25:
/+ Michal 'GiM' Spadlinski +/
import tango.io.Stdout;
import tango.math.Random;

void blink(T, U)(T t, bool delegate(ref U) cond, void delegate(ref U) act)
{
        foreach (ref a; t)
            if (cond(a))
                act(a);
}

class Kontener
{
    private int[] data;
    this (int n) { 
        data = new int[n];
        foreach (ref x; data)
            x = Random.shared.next(100);
    }
    int opApply(int delegate(ref int) dg)
    {
        int res;
        foreach (ref a; data)
        {
            if ( (res = dg(a)) != 0 )
                break;
        }
        return res;
    }
}

void main()
{
    Kontener kon = new Kontener(10);
    foreach (a; kon)
        Stdout (a) (" ");
    Stdout.newline;

    blink(kon, 
        (ref int b){ return b%2 == 0; },
        (ref int b){ Stdout(b).newline; b+=8; } );

    Stdout ("----------").newline;

    foreach (a; kon)
        Stdout (a).newline;
}


Output:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
26 6 56 35 78 66 87 46 79 69 
26
6
56
78
66
46
----------
34
14
64
35
86
74
87
54
79
69


Create a new paste based on this one


Comments: