试图找到比cond执行谓词函数匹配更合适的宏.
目前,我正在做这样的事情:
(cond
(map? x) (do-map-code x)
(sequential? x) (do-seq-code x)
(keyword? x) (do-kw-code x)
:else (do-generic-code x))
Run Code Online (Sandbox Code Playgroud)
在理想的世界中,我想将数据作为每个左手条件的第一个参数,允许我写这个.
(cond x
map? (do-map-code x)
sequential? (do-seq-code x)
keyword? (do-kw-code x)
:else (do-generic-code x))
Run Code Online (Sandbox Code Playgroud)
有点像倒退condp.
作为参考,我知道我可以使用condp与type和检查对类型值.我只是想知道这个宏是否存在.
你可以condp这样做:
(condp #(%1 %2) x
map? (do-map-code x)
sequential? (do-seq-code x)
keyword? (do-kw-code x)
(do-generic-code x))
Run Code Online (Sandbox Code Playgroud)