请在2024年Clojure状况调查!中分享您的想法。

欢迎!有关如何使用本服务的更多信息,请参阅关于页面。

0投票
文档

问题

对于例如枚举(Enums)这样即使用户了解case,但难度较大以实现恒有时效分发的问题并不常见。

提议

应通过宏包装来记录用case将任意常量分发的可能性。

措辞

  • 是否应该警告使用不稳定的值执行此类操作?
  • 是否应提及除Java枚举之外的任何其他内容?

Case技术

Case已记录为接受所有可读形式作为测试常量。然而,通过包装在其他宏中,它也可以使用任何编译时已知常量作为测试常量。

有时这是合适的,例如,在基于java Enum进行分配时。
其他时候,不那么合适,例如,在基于hash在虚拟机重启时改变的对象进行分配时(破坏AOT)。

影响

这项技术是应用更一般技术的应用:将非文字传递给另一个宏。
是否有其他宏具有类似的使用案例?

参考

https://groups.google.com/d/topic/clojure/3yGjDO2YnjQ/discussion

3 个答案

0投票

评论者:bendlas

-这是重复的-

实际上,这是一个替代方案

0投票

评论者:petrglad

可能这个条目和CLJ-1367 linger了这么久,因为已经有了“condp”,可以按照以下方式使用:

(condp = test-value JavaClass/CONST1 result1 JavaClass/CONST2 result2)

这实际上是顺序的并且较慢,但与plain case大致一样简洁。

但是,如果这是一个将用于替换plain 'case'的格式,则应在文档中建议使用它。

0投票
参考:https://clojure.atlassian.net/browse/CLJ-1368(报告者:bendlas)
...