On 2009-04-02 14:32:48 -0400, Steve Teale <steve.te...@britseyeview.com> said:

Could you please give a three or four line example of what it is you want to achieve.

What Eljay wants to be able to do is this:

1. dynamically add message responders to dynamic objects
2. dynamically add message responders to dynamic classes, which would applies
3. capability to add override existing message responders
4. he want classes to be represented by singleton object factories used to instanciate instances

Basically, he want to reimplement Objective-C in D, or so it looks like (although Objective-C doesn't have 1), unless I'm missreading his intent.

In his example he creates a base class called "Id", which is the root for dynamic objects and has a "perform" method which is called whenever you want to pass a message.

At that point he uses a switch statement in the derived class to decide how to handle the message. Since he said earlier that the idea was to use a hash table (to make things extendable at runtime), I guess message handling is the point of his example. So it must be message calling. Passing a message that looks like this in Objective-C:

        [obj addWithA:5 withB:3];

would work something like this with his proposed system:

        msg["@"] = "add"; // Just using "add", but could have been 
"addWithA:withB:"
        msg["a"] = "5";
        msg["b"] = "3";
        obj.perform(msg);

- - -

And now, if I can put up my own suggestion, I'd suggest he tries with this:

        obj.perform("add", 5, 3);

which could be implemented with a D-style variadic function, see:
<http://www.digitalmars.com/d/2.0/function.html#variadic>

--
Michel Fortin
michel.for...@michelf.com
http://michelf.com/

Reply via email to