The following repl session shows my attempt to dispatch a multimethod on "type":

...
user> (defmulti mm type)
#'user/mm
user> (type "a")
java.lang.String
user> (defmethod mm java.lang.String [s] (println "string"))
#<MultiFn clojure.lang.mult...@41e3a0ec>
user> (mm "a")
string
nil
user> (type (.getBytes "a"))
[B
user> (defmethod mm [B [b] (println "bytes"))
; Evaluation aborted.
user> (def ba-type (type (.getBytes "a")))
#'user/ba-type
user> (defmethod mm ba-type [b] (println "bytes"))
#<MultiFn clojure.lang.mult...@41e3a0ec>
user> (mm (.getBytes "a"))
bytes
nil
user> 
...

It works easily for the string, but for a native java byte array, type (or 
class) gives me back this "[B", which I'm unable to use as a dispatch value for 
the defmethod.
I can, however, assign the value to a reference and us that to dispatch on 
successfully - but that feels like a hack.

Is there a way to express the byte array type in a different way than "[B" that 
would work?

Thanks, Frank.






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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
"REMOVE ME" as the subject.

Reply via email to