On 03/06/13 18:22, Alice wrote:
I often need to do this when writing hiccup helper functions:

(defn my-widget
   [& args]
   (let [attrs    (if (map? (first args)) (first args) {})
         contents (if (map? (first args)) (next args) args)]
     ...


I found this post, but considering that it is 4 years old, is there
any new library developed to help with this situation?.

https://groups.google.com/group/clojure/browse_frm/thread/125a8af68813cd98


why are you not using named arguments? Is there somethign in hiccup that prevents you from doing so? It seems to me they would save you quite a bit of hassle and make the code more evident...

(defn my-widget
  [& {:keys [attrs contents]}]
  ...

or if you don't know exactly what keys will come in you can relax it a bit with (defn my-widget [& {:as opts]}] ...

HTH,

Jim

ps: assuming there is no constrain I'd go for this one:

(defn my-widget
  ([attrs contents] ...)
  ([contents] (my-widget {} contents))
  ([] (my-widget {} []))

--
--
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
Note that posts from new members are moderated - please be patient with your 
first post.
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
--- You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to