Clojure:有占位符形式/函数吗



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

如果没有提供默认表达式,也没有匹配子句,则会引发IllegalArgumentException。

我不需要处理不匹配,也不想用try形式包围condp。我正在考虑在那里放一个占位符。什么是最快、最简单的Clojure占位符表单?

编辑:

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

如果你不需要处理不匹配(即你可以保证总是有匹配),那么你就不需要把任何东西放在那里作为占位符。

如果你认为总是有匹配的假设被证明是错误的,那么你会得到一个IllegalArgumentException,但这是一件好事,因为它会立即告诉你代码中有逻辑错误。这是一个很好的老故障快速原则在行动

您可以说:

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

简短回答:使用nil

但您不需要默认值的原因是,您确信至少有一个谓词会成立,对吧?这并不是说你依赖于副作用,对吧?

最新更新