gpt4 book ai didi

Clojure - 适用于除第 n 个元素之外的所有元素

转载 作者:行者123 更新时间:2023-12-02 16:10:51 25 4
gpt4 key购买 nike

我有一个如下所示的向量:

[ "1" "2" "3" "4" ]

我希望编写一个函数,将向量返回到:

[ 1 "2" 3 4 ]
; Note that the second element is still a string

请注意,没有任何更改,而是返回一个全新的向量。在 Clojure 中执行此操作的最简单方法是什么?

最佳答案

map 索引是一个不错的选择。调用您传递的函数,其中包含输入中的一项的值以及找到它的索引(索引优先)。该函数可以选择生成一个新值或返回现有值。

user> (map-indexed (fn [i v]
(if-not (= 1 i)
(Integer/parseInt v)
v))
[ "1" "2" "3" "4"])
(1 "2" 3 4)

if 返回 v 时,它与结果映射中的值完全相同,因此您可以在选择保留的部分中保留结构共享的优势。如果您希望输出保留为向量,那么您可以使用 mapv 并自行传递索引序列。

user> (mapv (fn [i v]
(if-not (= 1 i)
(Integer/parseInt v)
v))
(range)
[ "1" "2" "3" "4"])
[1 "2" 3 4]

有很多种写法

关于Clojure - 适用于除第 n 个元素之外的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30873002/

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