gpt4 book ai didi

recursion - Clojure 递归函数

转载 作者:行者123 更新时间:2023-12-02 06:07:16 29 4
gpt4 key购买 nike

作为一个 Clojure 新手,我被这个小问题困扰着:

我想遍历序列并执行 split,然后对序列元素执行 str(串联)函数。

这是我的顺序:

(("2.660.784") ("2.944.552") ("44.858.797"))

我想要得到的是这样的:

("2660784" "2944552" "44858797")

这是我为我的问题创建递归解决方案的尝试:

(defn old 
[squence]
(let [size (count squence)]
(loop [counter 1]
(if (<= counter size)
(apply str (clojure.string/split
(first (first squence))
#"\b\.\b"
))
(old (rest squence)))
)))

当然,这不是解决方案,因为它仅将 splitstr 应用于一个元素,但我想对 中的每个元素重复此操作>序列序列 是我项目中其他一些函数的产物。

我肯定遗漏了一些东西,所以请帮我解决这个问题......

最佳答案

最简单的写法是用replace,而不是split/str。一旦您编写了可以对单个字符串执行此转换的函数,您就可以使用 mapfor 对字符串序列执行此操作。在这里我不得不稍微解构一下,因为无论出于何种原因,序列中的每个元素本身都是另一个序列;我刚刚取出了第一个元素。

(for [[s] '(("2.660.784") ("2.944.552") ("44.858.797"))]
(clojure.string/replace s #"\b\.\b" ""))

关于recursion - Clojure 递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7787741/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com