【发布时间】:2012-02-26 12:34:55
【问题描述】:
我需要一个 case 宏的实现。无法使用原始的 clojure 实现,因为它在内部使用了 Java case 语句。
http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/case
案例宏
用法:(case e &从句)
我可以尝试自己构建一个宏,但这都是clojure。也许甚至有一种方法可以使用真正的 js 功能。
有没有人为此提供函数或宏?
【问题讨论】:
-
#clojure 的 bsteuber 建议如下:
(defmacro case [& args] `(condp = ~@args))或简单地使用 condp。这当然没问题,但我想也许有人可以帮助构建一个更多的 js 原生版本。 -
这以微妙的方式破坏了交叉兼容性,我不建议这样做 - 例如,考虑
(case 'x x 1 y 2)。要么手动使用condp,要么使case在语义上等同于Clojure 版本。
标签: javascript clojure clojurescript