8 Stimmen

Wie wird eine Multimethode auf den Typ eines Arrays angewendet?

Ich arbeite an einer Multimethode, die einen Hash für eine Reihe von verschiedenen Dingen in einer Sequenz zu aktualisieren muss. Sah ziemlich geradlinig aus, bis ich versuchte, den "Typ eines Arrays von X" einzugeben.

(defmulti update-hash #(class %2))

(type (byte 1))
=> java.lang.Byte
(defmethod update-hash java.lang.Byte [md byte]
  (. md update byte))

(type (into-array  [ (byte 1)]))
=> [Ljava.lang.Byte;
(defmethod update-hash < WHAT GOES HERE > [md byte]

9voto

Brian Carper Punkte 68444

Beides sollte funktionieren:

(defmethod update-hash (Class/forName "[Ljava.lang.Byte;") [md byte] ...)

(defmethod update-hash (class (make-array Byte 0)) [md byte] ... )

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X