Callbacks or similar?
Lemonfiend
Lemon at fie.nd
Sat Feb 16 13:40:28 PST 2013
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 :(
More information about the Digitalmars-d-learn
mailing list