欢迎!请查看关于页面,了解更多关于该功能的详细信息。
获取常量时间的派发对于示例中如枚举的情况非常困难,即使用户知道case。
应该通过包装宏记录通过case对任意常量进行派发的可能性。
Case已记录为接受所有可读形式作为测试常量。然而,通过包装在另一个宏中,也可以使其使用任何编译时已知的常量作为测试常量。
有时这是适当的,例如在基于Java枚举进行派发时。其他时候,则不这么认为,例如在基于当虚拟机重启时哈希变化的对象进行派发时会中断AOT时。
这项技术是一个更通用技术的应用:将非字面量从另一个宏传递到宏中。有其他宏有这样的使用案例吗?
https://groups.google.com/d/topic/clojure/3yGjDO2YnjQ/discussion
评论者:bendlas
-这是重复的- http://dev.clojure.org/jira/browse/CLJ-1367
实际上,这是一个替代方案
评论者:petrglad
这个票证和CLJ-1367 linger了这么久可能是因为已经有'condp'可以使用,如下所示
(condp = test-value JavaClass/CONST1 result1 JavaClass/CONST2 result2)
这是顺序的,更慢,但与简单的case一样简洁。
然而,如果这是将要使用的形式而不是普通'case',则应在文档中提出建议。