4

我的java.lang.IllegalArgumentException: No value supplied for key:Clojure 代码中有一个。

我知道当我试图解构作为参数传递的映射中的键时会发生这种情况。

然而,这里奇怪的是,这个函数多年来一直运行良好,数据相同。唯一似乎不同的是我现在如何导入函数

这是错误:

Caused by: java.lang.IllegalArgumentException: No value supplied for key: 
{:style {:color [255 150 150 255], :stroke-weight 2}, :points [[-1 0] [0 -1] [1 0] [0 1] [-1 0]]}

这是抛出它的函数。

(defn scale
  [val {:keys [style points]}]
  {:style style
   :points (scale-shape val points)})

换句话说,我要求地图包含名为styleand的键,并且给它一个包含名为andpoints的键的地图。stylepoints

这段代码几个月来一直运行良好。

不同之处在于我现在使用sshapes/scalewheresshapes被导入的地方来调用它:

 (:require [patterning.sshapes :as sshapes])

而以前我只是将其称为scalescale 进入命名空间的地方

 (:require [patterning.sshapes :refer :all])

这会导致那种错误吗?

4

1 回答 1

5

好的。我更改了要使用的代码

(:require [patterning.sshapes :refer [scale rotate]])

IE。使用明确命名的所需函数,做了一个 lein clean,问题就消失了。函数定义本身和调用它们的代码保持不变。

诡异的。

于 2014-07-08T19:27:00.363 回答