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
-~----------~----~----~----~------~----~------~--~---

Reply via email to