On Saturday, 16 February 2013 at 21:31:05 UTC, Jonathan M Davis wrote:
On Saturday, February 16, 2013 22:24:19 Lemonfiend wrote:
On Saturday, 16 February 2013 at 21:03:54 UTC, Dicebot wrote:
> http://dlang.org/expression.html#FunctionLiteral
> > Function parameters/variables are declared in D using
> "ReturnType function(ParameterTypes) symbol". "function" is a
> keyword here, it can be swapped for "delegate" to get, em,
> delegates.
> > In your case something like "void function(int) callback" > will
> do.

You mean this?

void foo(int[] arr, int cmp, void function(int) callback)
{
        foreach(int val; arr)
        {
                if(val == cmp)
                        callback(val);
        }
}

But how do I then pass bar to foo?

void bar(int val)
{
        writeln(val);
}

This doesn't work:

foo([0,1,2], 1, bar);

foo([0, 1, 2], 1, &bar);

should work. void function(int) is a function pointer, so you need to pass it a pointer to a function. bar by itself is attempting to call the function (which won't work due to a lack of arguments). It's discussed in the link to
the documentation that Dicebot gave you.

- Jonathan M Davis

Ah you're right, it does, thanks.
I find the D documentation to generally be very hard to read :(

Reply via email to