Hi,

Am 24.06.2009 um 14:21 schrieb arasoft:

Is there a way to avoid having to use a function like this

(defn coerce-primitive-integer [value to-class]
   (cond (= to-class java.lang.Byte) (byte value)
         (= to-class java.lang.Short) (short value)
         (= to-class java.lang.Integer) (int value)
         (= to-class java.lang.Long) (long value))
)

in order to coerce a number to the class of another number?

This cannot be a function, because functions
cannot return primitive types. Their return
value will always be boxed.

So you need a macro to do this. Furthermore
you can use condp to declutter the whole thing
a little bit.

(defmacro coerce-primitive-integer
  [value to-class]
  `(condp = ~to-class
     Byte    (byte ~value)
     Short   (short ~value)
     Integer (int ~value)
     Long    (long ~value)))

Please note, that value can be dereferenced
several times, because the branches are
mutually exclusive. So it is evaluated only
once.

Hope this helps.

Sincerely
Meikel

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to