匹配 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))
请问这个类型匹配可以吗? (我正在使用 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))