小编Pau*_*aul的帖子

在Clojure中获取最大值和最小值

我试图将SQL查询的最大和最小结果拉到Clojure中,这样我就可以对它们进行数学分析,但我不确定为什么会出现错误.

我已经在代码中使用了max和min函数来尝试确定这些结果,尽管我一直收到两个错误,这些错误似乎与我使用:counter关键字的方式有关.

从SQL查询的映射中返回的数据如下所示:

    {:date1 "20131007", :data "object1", :counter 1000}
    {:date1 "20131007", :data "object2", :counter 50}
    {:date1 "20131007", :data "object3", :counter 230}
Run Code Online (Sandbox Code Playgroud)

当我使用这段代码时:

    minvalue(min(map(keyword :counter)data2))
    maxvalue(max(map(keyword :counter)data2))
    valrange(- maxvalue minvalue)
    valpc(* (/ valrange 100) 10)
    x(- maxvalue valpc)
Run Code Online (Sandbox Code Playgroud)

我显然希望将minvalue设置为50并将maxvalue设置为1000,尽管我收到此错误:

    java.lang.ClassCastException: clojure.lang.LazySeq cannot be cast to java.lang.Number
Run Code Online (Sandbox Code Playgroud)

如果我从代码中删除map函数并再次运行它,我收到此错误:

    java.lang.ClassCastException: clojure.lang.Keyword cannot be cast to java.lang.Number
Run Code Online (Sandbox Code Playgroud)

任何帮助都是值得赞赏的,因为我完全陷入了困境(而且我可能是Clojure的新手)谢谢

clojure max min

1
推荐指数
2
解决办法
4365
查看次数

标签 统计

clojure ×1

max ×1

min ×1