2024 Clojure 状态调查中分享您的想法!

欢迎!有关如何使用本站的更多信息,请参阅关于页面。

0
错误

嗨!

我的控制台中有错误,指向我的函数

 (defn sales-by-customer [name-cus]
   (->> sales_2
       (filter #(= (second %) name-cus))
       (map #(* (Integer/parseInt (last %)) (Double. (products_2 (second %)))))
       (reduce +)
    )
  )

sales_2 : [id customers_name products_name quantity]

([1 Sara candies 3] 
 [2 Joe jam 3]
 [3 Sara gum 1])

products_2 : {products_name price}

({candies 6.0} {gum 4.5} {jam 45.1})

基本上,我在尝试的是,当调用(sales-by-customer "Sara")时,我想得到Sara购买的总和,即(36.0 + 14.5),并显示结果。

当我调用我的函数时,我得到以下错误信息

 Syntax error (ClassCastException) compiling at (db.clj:76:1).
class clojure.lang.LazySeq cannot be cast to class clojure.lang.IFn (clojure.lang.LazySeq and clojure.lang.IFn are in unnamed module of loader 'app')

有什么建议解决这个问题?
我应该得到一个数字,我不知道类型转换错误发生在哪里...

谢谢!

1 答案

0

你在把products_2当作函数调用,而它是一个映射集合,不是一个函数,这就是那里ClassCastException的含义。

一个映射可以当作函数调用来使用,但是映射的集合不可以。

...