Clojure循环函数仅返回Nil
下面的函数将文本变量拆分为一个步长的字符序列。唯一的问题是我不知道如何返回结果列表,我需要计算它的Shannon熵,以获得几个步长值Clojure循环函数仅返回Nil,clojure,Clojure,下面的函数将文本变量拆分为一个步长的字符序列。唯一的问题是我不知道如何返回结果列表,我需要计算它的Shannon熵,以获得几个步长值 (定义拆分文本[文本步骤] (循环[i 0结果[]] (当(需要从循环返回结果时: (defn split-text [text step] (loop [i 0 result []] (if (> (+ i step) (count text)) result ;; <== here (recur (+ i st
(定义拆分文本[文本步骤]
(循环[i 0结果[]]
(当(需要从循环返回结果时:
(defn split-text [text step]
(loop [i 0 result []]
(if (> (+ i step) (count text))
result ;; <== here
(recur (+ i step)
(conj result (subs text i (+ i step)))))))
正如下面的答案所说,您应该返回一个错误条件分支的结果。您也可以这样做,以降低代码复杂性:(defn split text[text step](map(partial apply str)(partition step text)))
谢谢!这正是我需要的。
(defn split-text [text step]
(loop [i 0 result []]
(if (> (+ i step) (count text))
result ;; <== here
(recur (+ i step)
(conj result (subs text i (+ i step)))))))
(defn split-text [text step]
(loop [tail text result []]
(if (empty? tail)
result
(let [len (min step (count tail))]
(recur (subs tail len)
(conj result (subs tail 0 len)))))))