если бы у меня было неизвестное количество аргументов, которые я хочу связать друг с другом с помощью «let», например:
let [a "hello" b 55 ]
Если я привяжу let внутри функции / макроса или чего-то подобного, и я хочу прокрутить список, как мне это сделать?
Обратите внимание, что в let есть 4 элемента, но я хочу пройтись только по «клавишам». Примером использования может быть проверка того, является ли значение, привязанное к ключу, числом вроде b, равным 55.
Изменить: в качестве примера: обратите внимание, что это следующее очень не работает, но оно просто предназначено для объяснения проблемы:
(defn func [& arguments]
(let [ ~arguments] ((println "omg no way!") (for [x let-list] (number? x (println "roar") )))
ввод: (func [a "привет" b 55]
Итак, в основном: я хочу иметь функцию, которая:
- связывает аргументы с некоторой формой списка, например: [a b]
- выводит "omg no way!") - не должен быть частью цикла, должен печататься только один раз в функции
- какой-то цикл вроде цикла for, который проходит через «let-list», так что он будет следующим: «a, это число? нет, это число b? да, выведите« roar »
Вывод: omg no way roar
Еще раз: Мне интересно, есть ли способ получить доступ к ключевым словам внутри let внутри функции. Как показывает цикл for, я хочу получить доступ к каждому отдельному элементу и что-то делать с ним. Если бы я использовал (вместо [x arguments], он бы дал: omg no way, roar roar (потому что b привязано к 55, поэтому это число, но 55 также является числом, но нет необходимости использовать 55, потому что 55 уже привязано к b)
loop
иrecur
: clojure.org/special_forms#Special Forms - ( цикл [привязки *] выражения *) - person Diego Basch   schedule 14.01.2013(map second (partition 2 arguments))
. - person Leonid Beschastny   schedule 14.01.2013