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

时间:2015-07-31 09:27:11

标签: clojure core.match

何我可以进行这种类型的匹配工作。 (我正在使用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

由于

1 个答案:

答案 0 :(得分:2)

您可以使用正常的condp

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