On Monday, 7 October 2013 at 21:04:35 UTC, Kozzi wrote:
In my work we are rewriting some of ours modules from PHP to D. And today one of my colleague want to rewrite some of PHP code, where he use list statement. I never use this statement in PHP. So I do not know if there is a some alternative in D phobos. So I try to write my own solution. And it took approximately only one minute and that why I ove D.

Because I was able to implement same functionality with same syntax quite fast :).

Here is my solution. Yes I know, it is not perfect but it works :P.

import std.stdio;

struct list
{
        void*[] ptrs;
        static list opCall(T...)(auto ref T vars)
        {

                list ls;
                foreach(ref var; vars)
                {
                        ls.ptrs ~= &var;
                }
                return ls;
        }

        void opAssign(T)(T[] values)
        {
                foreach(index, ptr; ptrs)
                {
                        *(cast(T*)ptr) = values[index];
                }
        }
}

void main(string[] args)
{
        int a, b, c;
        list(a, b, c) = [1,2,3];
        writeln(a);
        writeln(b);
        writeln(c);

}

That is awesome. I love this features in PHP and miss it in many other languages. :)

Reply via email to