Thanks. 1) The returned exception is misleading. For example, in the following (contrived) case: user=> (. obj (toString "")) java.lang.IllegalArgumentException: No matching method found: toString for class java.lang.Object Since the member-symbol is not evaluated, shouldn't the exception be (at least): ... method found: (toString ... ?
2) For runtime method resolution - Instead of calling the Clojure reflector methods directly (as was suggested in the discussion you mentioned) perhaps the dot form should attempt to evaluate the member-symbol; it will use the value if the evaluation succeeds and can still use the symbol name (as it currently does) if the evalution fails (e.g. the symbol is not bound). On Mar 25, 10:06 am, Laurent PETIT <laurent.pe...@gmail.com> wrote: > Hello, > > No, it's not possible, dot (.) is a special form and disallows this. > > Search this mailing list for the subject "Help with the dot operator special > form" for a similar discussion on the ways to achieve more dynamic (runtime) > method resolution. > > HTH, > > -- > Laurent > > 2009/3/25 ninix <nitzan....@gmail.com> > > > > > > > Hi, > > > Is there any way to get a "dynamic" member-symbol for use in the (.) > > special form? > > > For example, I get the following exception: > > user=> (def obj (Object.)) > > #'user/obj > > user=> (. obj (symbol "f")) > > java.lang.IllegalArgumentException: No matching method found: symbol > > for class java.lang.Object > > > I expected this to behave like: (. obj f), so I can change the > > accessed member by changing the argument in (symbol ...), but was > > surprised by the result... > > > Thanks --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---