错误" clojure.lang.LazySeq无法强制转换为java.lang.Number"

时间:2016-05-25 18:03:47

标签: clojure

在Luminus应用程序中,这是一个产生错误的动作的一部分:

                 some-var (if (rem total-records page-size)
                                     (quot total-records page-size)
                                     (+ 1 (quot total-records page-size)))

错误为clojure.lang.LazySeq cannot be cast to java.lang.Number。这不是:

some-var 123

如何解决错误?

1 个答案:

答案 0 :(得分:1)

您认为其中一个变量total-pages和/或page-size不是数字而是seq而remquot函数要求其所有参数都是数字。尝试将其打印到控制台以检查它是哪一个。

您的if表达式中还有另一个问题:您希望使用数值来测试真实性。在Clojure中,任何数字值(包括0)都是真实的(严格来说只有nilfalse值被视为虚假)所以你需要将rem的结果与零进行比较:

(if (zero? (rem a b)) 
  :truthy
  :falsey)