Clojure:是否有占位符形式/功能?

时间:2012-07-28 10:12:22

标签: java clojure lisp

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

  

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

我不需要处理不匹配也不想用try表单包围condp。我想把占位符放在那里。什么是最快最简单的Clojure占位符表单?

编辑:

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

3 个答案:

答案 0 :(得分:4)

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

如果你认为总会有匹配的假设是错误的那么你会得到一个IllegalArgumentException - 但这是好事,因为它会立即告诉你你有一个逻辑错误在你的代码中。这是行动中的好fail-fast principle

答案 1 :(得分:2)

你可以说:

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

答案 2 :(得分:1)

简答:使用nil

但是你不需要默认值的原因是你确定至少有一个谓词会存在,对吧?这并不是说你依赖副作用,对吗?