“错误”;clojure.lang.LazySeq不能强制转换为java.lang.Number“;

“错误”;clojure.lang.LazySeq不能强制转换为java.lang.Number“;,clojure,Clojure,在Luminus应用程序中,有一部分操作会产生错误: some-var (if (rem total-records page-size) (quot total-records page-size) (+ 1 (quot total-records page-size))) 错误为clojure.lang.Laz

在Luminus应用程序中,有一部分操作会产生错误:

                 some-var (if (rem total-records page-size)
                                     (quot total-records page-size)
                                     (+ 1 (quot total-records page-size)))
错误为
clojure.lang.LazySeq,无法转换为java.lang.Number
。但这并不是:

some-var 123

如何修复错误?

看起来您的变量之一
总页数
和/或
页面大小
不是一个数字,而是一个seq,而
rem
quot
函数要求其所有参数都是数字。尝试将其打印到控制台以检查它是哪一个

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

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

我有这个
总记录(db/get articles总计数)
。如何让它进行评估?您的
get articles total count
看起来如何?它似乎返回了一个seq而不是裸数。它返回了一个数字,它是“select count(*)…”打印
(db/get articles total count)
的结果,我想你会看到它要么是一个hashmap向量,要么是一个hashmap。