java.lang.ClassCastException:java.lang.Long无法强制转换为clojure.lang.IFn

时间:2016-06-06 09:36:49

标签: java clojure lisp

这是我的第一个问题,希望你能帮助我。 我正在编写clojure中的合并函数。我在tryclojure上测试我的代码并在标题中得到错误。

这是我的代码

size    quantity
1       5
2       20
3       9

那么,这里的问题是什么?期待答案:)

问候

2 个答案:

答案 0 :(得分:0)

首先,您需要引用列表,否则将对它们进行求值,并将它们的第一个元素视为要调用的函数,因此例外:

'(1,2,5)
;; => (1 2 5)

报价将帮助您获得包含数字的列表:

,

不使用元素分隔符(如(1 2 5))也更加惯用,您可以看到上面打印的表单(merge)。

由于这似乎是一项练习,我会让您解决isPrototypeOf函数中的其他问题。

答案 1 :(得分:0)

正确的呼叫是(合并'(1 2 3)'(4 5))或(merge [1 2 3] [4 5])(逗号是可选的)。当您编写不带引号的列表(1,2,3)时,第一个元素被视为函数。 1不是函数,您会收到错误消息。