Suppose that I receive a message, but instead of defining a function inside the receive() block, I want to call a member of a class instance. (This is useful to me for several reasons). Right now my code looks like:

class Handler {
auto handle() {
    return (string msg) {
        writeln("received: ", msg, " count: ", i);
    }; // this ';' ends the return statement
} // handle()
private:
    i;
}

//somewhere inside main
auto handler = new Handler;
receiveTimeout( dur!"seconds"(1),
                handler.handle
              );

It works, but I must say I'm not even sure about what the hell I am doing :D If I got it correctly, I'm calling a function that returns a delegate, which is used by the receiveTimeout() somehow to dispatch the message (and everything is in some way decided at compile time, I believe).
Does this ugly piece of code make any sense? Should I rework it?

Reply via email to