Clojure 是什么原因引起的;java.lang.IllegalArgumentException:没有为键“提供值”;?

Clojure 是什么原因引起的;java.lang.IllegalArgumentException:没有为键“提供值”;?,clojure,destructuring,Clojure,Destructuring,我有形状代码 (let [{foo :foo} (make-foo)] ...) 此代码偶尔会发出java.lang.IllegalArgumentException:没有为键提供值:{:foo“foo”:other“other”} 我已经看到了,但是自从我的程序上次运行以来,我没有改变它的要求 出现“没有为键提供值”异常的可能原因是什么?当您尝试从奇数个键/值条目创建映射时,会发生这种情况:最后一个键缺少值。一种可能发生这种情况的方法是将非映射集合分解为映射,但将其视为映射,因为这会在将其分

我有形状代码

(let [{foo :foo} (make-foo)] ...)
此代码偶尔会发出
java.lang.IllegalArgumentException:没有为键提供值:{:foo“foo”:other“other”}

我已经看到了,但是自从我的程序上次运行以来,我没有改变它的要求


出现“没有为键提供值”异常的可能原因是什么?

当您尝试从奇数个键/值条目创建映射时,会发生这种情况:最后一个键缺少值。一种可能发生这种情况的方法是将非映射集合分解为映射,但将其视为映射,因为这会在将其分解为普通映射之前从集合中隐式创建映射。

我找到了解决特定问题的方法。不过,我认为,对于什么样的情况会导致这种例外的一般问题,有一个答案是有用的。对于那些对我的特定问题好奇的人来说,
makefoo
实际上是返回
[{:foo“foo”}]
而不是
{:foo“foo”}