parameterized lazy expression
freeagle
dalibor.free at gmail.com
Tue Oct 2 14:36:05 PDT 2007
BCS wrote:
> Reply to freeagle,
>
>> Hello,
>>
>> is it possible somehow, to pass as a lazy argument expression with
>> argument/s?
>>
>> something like
>> foo((int x) x == 0);
>> where x will be passed as parameter to the exp inside the foo
>> function:
>>
>> void foo(lazy bool dg)
>> {
>> if(dg(10)) {...}
>> }
>> i'd like not to have to use foo(bool delegate(int x) {return x == 0})
>> if possible
>>
>> I hope i made myself clear, thanks for advices in advance :)
>>
>> freeagle
>>
>
> the best you can do would be use the short form of delegates
>
> foo((int x) {return x == 0;})
>
> it's 3 char's longer than what you asked for but.
>
>
> OTOH could the syntax be changed so that a delegate uses a statement
> rather than a block?
>
> foo(bool delegate(int) a, int b);
>
> foo((int x) return x == 0;, 5)
>
>
hmm, well, if thats the shortest possible form...
i wanted to make a template representing mathematical sets, that would
be defined something like MSet!(int)(x > 0 && x < 10, x*2)
but with the returns and all, it looks weird:
MSet!(int)((int x) {return x > 0 && x < 10; }, (int x) { return x * 2; })
freeagle
More information about the Digitalmars-d-learn
mailing list