[D言語]ruby風each/map

813 ワード


import std.stdio;

class Array(T){
    private:
    T[] data;

    public:
    this(T[] data ...){
        this.data = data.dup;
    }

    void each(void delegate(T) dg){
        foreach(T value; data){
            dg(value);
        }
    }

    T[] map(T delegate(T) dg){
        T[] result = new T[data.length];
        foreach(int index, T v; data)
            result[index] = dg(v);
        return result;
    }
}

void main(){
    auto arr = new Array!(int)(1,2,3,4,5);
    arr.each(delegate void (int v){ writefln(v); });
    auto arr1 = arr.map(delegate int (int v){ return v * 3; });
    writefln(arr1);
}