On 15.04.2011 22:24, KennyTM~ wrote:
On Apr 16, 11 00:29, Andrej Mitrovic wrote:
I've also tried to create a some sort of 'bind' function which could
let you bind arguments to specific parameters of a function. If I had
it working it would really help (me) out in coding for  e.g. the
Windows API. For example you might have a WinAPI function such as (I'm
pseudocoding here):

CreateWindow(int x, int y, int w, int h, int* opt1, int* opt2, int*
opt3, char* name);

And if you want to create a certain type of window with some
parameters which are always the same, you could create an alias that
binds certain arguments to this function:

alias bind!CreateWindow(void, void, width, height, null, null, null,
void) myWindow;

Here 'void' would designate arguments that you would have to fill in
when calling myWindow.

You would call it like:
myWindow(posX, posY, "MyWindowName");

which would translate the call to:
CreateWindow(posX, posY, width, height, null, null, null, "MyWindowName");

I don't see the point reviving the std.bind module*. In your case a new function name 'myWindow' needs to be defined, which makes it easier to just create a wrapper function

    auto myWindow(int x, int y, char* name) {
       return CreateWindow(x, y, width, height, null, null, null, name);
    }

*: http://www.digitalmars.com/d/2.0/phobos/std_bind.html

I absolutely agree, also creating delegate in place solves pretty much all of std.bind use cases.

--
Dmitry Olshansky

Reply via email to