欢迎!请参阅 关于 页面,了解更多关于这个是如何工作的信息。
要获取枚举(例子)等的常数时间调度,即使用户知道case命令,也是非常神秘的。
应该通过宏包装来记录使用case将任意常量调度的情况。
Case已记录为接受所有可读形式作为测试-常数。但是,通过将其包装在另一个宏中,也可以将其设置为使用任何编译时已知常量作为测试-常数。
有时这是合适的,例如在根据Java枚举进行调度时。其他时候,不那么合适,例如,当根据重新启动VM时hash发生变化的对象进行调度时(破坏AOT)。
这是一种更一般技术的应用:将非字面量从另一个宏传递到宏。还有其他具有类似用例的宏吗?
https://groups.google.com/d/topic/clojure/3yGjDO2YnjQ/discussion
评论者:bendlas
-这是一个重复的问题
实际上,这是一个替代方案
评论者:petrglad
可能就是这个票据和CLJ-1367长时间悬挂的原因,因为已经有'condp'可以这样做
(condp = 测试值 JavaClass/CONST1 结果1 JavaClass/CONST2 结果2)
这是顺序的,较慢,但与plain case一样简洁。
然而,如果这个表单将替代普通的'case'使用,则应由文档建议这一点。