gpt4 book ai didi

clojure - 寻找分割功能

转载 作者:行者123 更新时间:2023-12-02 14:24:56 24 4
gpt4 key购买 nike

我正在寻找具有以下行为的函数

(split-on "" ("" "test" "one" "" "two"))
(() ("test" "one") ("two"))

我在“核心”中找不到它,而且我不知道如何查找它。有建议吗?

编辑:split-when 看起来很有希望,但我认为我用错了。

(t/split-when #(= "" %) '("" "test" "one" "" "two"))
[["" "test" "one" "" "two"] ()]

而我正在寻找的返回值 [[] [“测试”“一”][“二”]]

最佳答案

partition-by 很接近。您可以按与分割标记相同的成员对序列进行分区:

(partition-by #(= "" %) '("" "test" "one" "" "two"))
(("") ("test" "one") ("") ("two"))

这会在其中留下额外的分隔符,尽管这很容易删除:

(remove #(= '("") %) 
(partition-by empty? ["" "test" "one" "" "two"]))
(("test" "one") ("two"))

如果你想了解它并用它制作一个传感器,你可以像这样定义一个:

(def split-on
(comp
(partition-by #(= "" %))
(remove #(= '("") %))))

(into [] split-on ["" "test" "one" "" "two"])
[["test" "one"] ["two"]]

这可以“一次性”完成,无需构建中间结构。

要将其变成正常功能(如果您不需要传感器):

(defn split-on [coll]
(into [] (comp
(partition-by #(= "" %))
(remove #(= '("") %)))
coll))

关于clojure - 寻找分割功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41863285/

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