user=> (rseq [:a :b])
(:b :a)
user=> (rseq (rseq [:a :b]))
ClassCastException clojure.lang.APersistentVector$RSeq cannot be cast to
clojure.lang.Reversible clojure.core/rseq (core.clj:1532)
为什么不能rseq
接受之前调用的结果rseq
?
我在文档字符串中读到参数必须是(实际上,“可以是”)向量或排序映射,上面表明它不能是RSeq
,所以我已经知道了。我想知道的是:这种限制有充分的理由吗?这只是一个疏忽,还是这个限制提供了一些重要的好处?
另外,除了从不打电话之外,是否有一个方便的解决方法rseq
?很难知道,当您RSeq
从一个函数返回一个函数时,其他地方的其他函数是否会调用rseq
它。
我之所以这么问,是因为看到我的代码因为如此令人惊讶的原因抛出异常令人沮丧。如果我知道为什么这是有道理的,我可能不太可能犯这种错误和类似的错误。