代码之家  ›  专栏  ›  技术社区  ›  Arthur Ulfeldt

如何在数组类型上调度多方法

  •  8
  • Arthur Ulfeldt  · 技术社区  · 14 年前

    我正在研究一个多方法,它需要在一个序列中为一堆不同的东西更新一个哈希。在我尝试输入“x数组的类型”之前,看起来相当紧张。

    (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]
    
    1 回复  |  直到 14 年前
        1
  •  9
  •   Arthur Ulfeldt    14 年前

    这两种方法都可以:

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