在Clojure中,能否将项目添加到倒数第二个列表中?
是否有办法将所有元素中的最后一个元素(即您的元素)存储到倒数第二个集合中,以便:在Clojure中,能否将项目添加到倒数第二个列表中?,clojure,Clojure,是否有办法将所有元素中的最后一个元素(即您的元素)存储到倒数第二个集合中,以便: (defn my-function [all] ; Assume all = '((I am) (A Fan) (Of) Yours) ) 我不确定是否有任何特定的内置功能。以下是我所想的一些伪代码: user-> (my-function '((I am) (A Fan) (of) Yours) ) Output ->
(defn my-function
[all] ; Assume all = '((I am) (A Fan) (Of) Yours)
)
我不确定是否有任何特定的内置功能。以下是我所想的一些伪代码:
user-> (my-function '((I am) (A Fan) (of) Yours) )
Output -> ((I am) (A Fan) (Of Yours)
假设所有输入都可以是任何长度和任何变量。使用
最后一次下降
最后一次下降
和concat
的组合,您可以实现我的功能,如下所示:
(defn my-function
[all]
(cons (last input) (second to last input)
)
您正在发布许多关于堆栈溢出的相关问题,这些问题在交互式上下文中可能更容易讨论和回答。你可以加入Clojurians Slack,在#初学者频道询问,那里的人们会很乐意帮助你。在注册-#初学者频道的人们都非常友好!我赞同肖恩·科菲尔德的话。许多快乐善良的人愿意帮助克洛尤里亚人。为什么的改变了现状?我猜这是打字错误?那么您想删除最后一个元素并将其附加到(新的)最后一个元素上(如paredit中的slurp)?这是昵称为noobprogrammer的同一个人吗?从注释样式和变量命名约定来看,它看起来是这样的
(defn my-function [all]
(let [start (drop-last 2 all) ; start=(I am) (A Fan)
[a b] (take-last 2 all) ; a=(of) b=Yours
new-end (concat a (list b))] ; new-end=(of Yours)
(concat start (list new-end))))