匹配 clojure 中的数据类型与 core.match/match 而不是 multimethod

matching data type in clojure with core.match/match instead of multimethod

请问这个类型匹配可以吗? (我正在使用 clojure.core.match/match)。或者 multimethod 是唯一的出路。

(let [x "1.2"]
  (match [(read-string x)]
         [^java.lang.Long l] :long
         [^java.lang.Double d] :double
         :else :string))

>> :long

谢谢

你可以用普通的 condp

(let [x "1.2"]
  (condp = (type (read-string x))
    java.lang.Long :long
    java.lang.Double :double
    :string))