gpt4 book ai didi

clojure - "%&"在 Clojure 中是什么意思?

转载 作者:行者123 更新时间:2023-12-03 00:40:25 25 4
gpt4 key购买 nike

我解决了58th使用递归的 4clojure 问题,但后来我查看了另一个人的解决方案,发现了这个:

(fn [& fs] (reduce (fn [f g] #(f (apply g %&))) fs))

这比我的解决方案更优雅。但我不明白%&是什么意思? (我确实理解 % 的含义,但不理解它与 & 组合时的含义)。有人能解释一下吗?

最佳答案

这意味着“其余参数”,如 this source .

Arguments in the body are determined by the presence of argument literals taking the form %, %n or %&. % is a synonym for %1, %n designates the nth arg (1-based), and %& designates a rest arg.

请注意,& 语法让人想起函数参数 ( see here ) 中的 & more 参数,但 &% 在内部起作用一个anonymous function shorthand .

一些比较匿名函数及其匿名函数速记等效项的代码:

;; a fixed number of arguments (three in this case)
(#(println %1 %2 %3) 1 2 3)
((fn [a b c] (println a b c)) 1 2 3)

;; the result will be :
;;=>1 2 3
;;=>nil

;; a variable number of arguments (three or more in this case) :
((fn [a b c & more] (println a b c more)) 1 2 3 4 5)
(#(println %1 %2 %3 %&) 1 2 3 4 5)

;; the result will be :
;;=>1 2 3 (4 5)
;;=>nil

请注意,& more%& 语法给出了其余参数的列表。

关于clojure - "%&"在 Clojure 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32165303/

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