Reflection in Erlang.
Fredrik Linder
fredrik.linder@REDACTED
Thu Jan 27 14:43:42 CET 2005
> > Using this design you could have the adaptor:getStub(...) return
> > my_behaviour_implementation and later use that to make the calls.
>
> I wan't to wrap objects from other language, so the problem
> is how to
> dinamicly impersonate an object with an arbitrary interface
> in Erlang. I
> can solve this using the simple call:
>
> adaptor:callMethod(Obj, "method1", Args).
>
> but I was looking for some "Sugar Syntax". The ideal was
> something like:
>
> Obj:method1(arg1, arg2).
>
> But I known, Erlang is not an OO language :)
The easiest fit is probably what you suggest yourself:
Type:Method(Obj, Arg1, Arg2) -> {Result, Obj} | exit(Reason)
or
Type:Method(Obj, Arg1, Arg2) -> {ok, Result, Obj} | {error, Reason, Obj}
Another approach could be to use funs to wrap in the specific object:
initObj(InitArgs) ->
fun(method1, CallArgs) -> something(InitArgs, CallArgs);
(method2, CallArgs) -> somethingelse(InitArgs, CallArgs);
(Method, CallArgs) -> parent:initObj(InitArgs)
end.
Obj = initObj(InitArgs),
{Result, Obj2} = Obj(method1, [arg1, arg2]),
{Result, Obj3} = Obj2(method2, [arg]).
Play around have fun!
/Fredrik
More information about the erlang-questions
mailing list