问题
I am working on a little pet project in Clojure. I have a function that I pass varargs:
(defn foor [bar & args]
(let new-args (custom-transform args)]
(do-something new-args))))))
But, do-something
is expecting varargs, not a list object. In custom-transform
(defn custom-transform [& args]
(if vars vars nil))
How do I preserve the "vararg"-iness of my args after applying a transformation?
回答1:
I think apply should do the trick:
(apply do-something new-args)
Your problem isn't specific to varargs. What you want to do is to call do-something
, passing the elements of an array as the arguments to the function. This happens to be precisely what apply
does.
来源:https://stackoverflow.com/questions/26021785/clojure-transforming-varargs-but-keeping-them-varargs