Java Clojure:是否有占位符表单/函数?

Java Clojure:是否有占位符表单/函数?,java,clojure,lisp,Java,Clojure,Lisp,我正在使用condp表格,并在其文档中注意到: 如果未提供默认表达式且没有匹配的子句,则抛出IllegalArgumentException 我不需要处理非比赛也不想用试一试的形式包围康普。我想在那里放一个占位符。最快最简单的Clojure占位符表单是什么 编辑: 谢谢大家的意见,很有帮助!这种行为的用例是,在用户触发的强制数据恢复任务中,我的应用程序需要动态解析Clojure代码以从日志文件恢复数据。损坏的数据(不匹配的数据)将被忽略,如果使用cond编写相同的表单,则将比condp使用更多的

我正在使用condp表格,并在其文档中注意到:

如果未提供默认表达式且没有匹配的子句,则抛出IllegalArgumentException

我不需要处理非比赛也不想用试一试的形式包围康普。我想在那里放一个占位符。最快最简单的Clojure占位符表单是什么

编辑:


谢谢大家的意见,很有帮助!这种行为的用例是,在用户触发的强制数据恢复任务中,我的应用程序需要动态解析Clojure代码以从日志文件恢复数据。损坏的数据(不匹配的数据)将被忽略,如果使用cond编写相同的表单,则将比condp使用更多的按键。

简短回答:使用
nil

但是您不需要默认值的原因是,您确信至少有一个谓词将保持不变,对吗?这并不是说你在依赖副作用,对吧?

你可以说:

(condp = option
  :foo 1
  :bar 2
  3)

如果您不需要处理不匹配(即,您可以保证始终存在匹配),那么您不需要将任何内容放在那里作为占位符


如果你的假设总是有一个匹配结果是错误的,那么你会得到一个IllegalArgumentException——但这是一件好事,因为它会立即告诉你代码中有一个逻辑错误。这是好的老办法

我越想这一点,就越能理解aib的观点。。。这是一个非常复杂的问题。在澄清和解决aib的担忧之前进行否决表决。这可能是非常误导的。只是要明确一点——如果副作用在起作用,而这可能是“糟糕的形式”——这并不像给出一个别人可能断章取义的答案那么糟糕。我们只需要承认这一点,就可以充分理解这里正在讨论的内容。谢谢Richard。用例是在强制数据恢复任务中解析Clojure中的动态代码,并忽略损坏/不正确的数据。。。它确实把重点放在了重点上:a)强烈建议测试覆盖所有情况,b)使用nil-尽管如果你覆盖了所有情况,这是不必要的,c)不要使用副作用。好的,再次回滚。我想我还没有完全清醒:)。谢谢。用例是在数据恢复任务中解析Clojure中的动态代码并忽略损坏/不正确的数据。