无法使用单个空选项序列或带有默认子句的单个选项序列使用 case。
我预期
bq. (case 1 () :a :none)
将返回 :none,但实际上它会失败并抛出一个没有信息的异常:“未处理的 clojure.lang.ArityException:传递给:core/max 的参数数(-2)不正确”
我预期 (case 1 () :a) 将失败并抛出“java.lang.IllegalArgumentException:没有匹配的子句”,但实际上它也失败了,并抛出
"未处理的 clojure.lang.ArityException:传递给 core/max 的参数数(-2)不正确”
这似乎不一致,因为当存在其他选项时,传递空选项列表是可行的
bq. (case 1 () :a 2 :b :none)
返回 :none,正如预期的那样
附带的补丁在进一步转换为 case** 之前移除了带有空测试列表的测试子句对,并添加了测试。