Helper objects to create delegates

Daniel Keep daniel.keep.lists at gmail.com
Wed May 30 20:02:05 PDT 2007



Jason House wrote:
> I have a multi-threaded application where I pass delegates between
> threads.  While I thought this was a good design in the beginning, I
> find myself having to create a lot of helper objects...  Is there any
> way to avoid all the extra typing?  Any candidate additions to the
> language that'd help? :)
> 
> The following results in a run time error:
> void example(){
>   foreach(foo x; objectList)
>     passDelegate({x.func(7);});
> }
> 
> The following works but is annoying to keep typing:
> 
> class Helper{
>   foo x;
>   int param;
>   this(foo _x, int _param){
>     x     = _x;
>     param = _param;
>   }
>   void opCall(){x.func(param);}
    static void delegate() create(foo x, int param)
    {
      return &(new Helper(x,param)).opCall;
    }
> }
> void example(){
>   foreach(foo x; objectList)
>     passDelegate(Helper.create(x,7));
> }

Like that?

	-- Daniel

-- 
int getRandomNumber()
{
    return 4; // chosen by fair dice roll.
              // guaranteed to be random.
}

http://xkcd.com/

v2sw5+8Yhw5ln4+5pr6OFPma8u6+7Lw4Tm6+7l6+7D
i28a2Xs3MSr2e4/6+7t4TNSMb6HTOp5en5g6RAHCP  http://hackerkey.com/


More information about the Digitalmars-d-learn mailing list