2015-06-02 4 views
1

Довольно простой вопрос здесь, но это действительно потрясает меня.Сохранение строковой переменной от деструкции

У меня есть небольшая функция здесь:

(defn something 
    [start-url n] 
    (loop [urls start-url index n]         
    (if (= index 0) 
     (set urls) 
     (recur 
     (flatten (pmap #(str *base-url* %) urls)) 
     (dec index))))) 

Я изменил важные части кода, но это в основном просто нужно отобразить через список строк, и повторялись. Однако, когда я начинаю цикл, urls естественно разрушает start-string в список символов, чего я не хочу.

В то же время, если я

(loop [urls '(start-url) index n] 

он возвращает Unsurprisingly SEQ с невычисленного старт-адресов.

Все, что я хочу сделать, это взять мой стартовый url и сохранить его как строку. Есть идеи? Это должно быть действительно просто, но, увы, это ускользает от меня.

+0

Является ли «start-url» одним URL-адресом или их набором? – noisesmith

+0

Я вызываю функцию с одним URL, но я хотел бы начать цикл с ним как с коллекцией. – Caleb

ответ

2

Выполнение (loop [urls [start-url] index n] ... должно сделать urls в вектор, содержащий единственную строку start-url, без разрушения.

Причина, по которой '(start-url) не делает то же самое, относится ко всей структуре, включая start-url. (list start-url) должен работать, но вектор обычно предпочтительнее в этой ситуации.

+0

haha ​​Я сделал '(vec start-url)' даже ... ах так близко. Но да, это то, что мне нужно спасибо! Это имеет смысл. – Caleb

Смежные вопросы