Я столкнулся с проблемой, когда неизменность внезапно перестала действовать для моих векторов.Мне было интересно, есть ли способ создать свежие неизменные векторные копии данного набора.
Clojuredocs предложил "aclone", но это дает мне ошибку, утверждая, что такого метода нет.
(defn stripSame [word wordList]
(def setVec (into #{} wordList))
(def wordSet word)
(def wordVec (into #{} [wordSet]))
(def diffSet (set/difference setVec wordVec))
(def diffVec (into [] diffSet))
diffVec)
(defn findInsOuts [word passList]
(def wordList (stripSame word passList))
(println word wordList)
(def endLetter (subs word (dec (count word))))
(def startLetter (subs word 0 1))
(println startLetter endLetter)
(def outs (filter (partial starts endLetter) wordList))
(def ins (filter (partial ends startLetter) wordList))
;(println ins outs)
(def indexes [ (count ins) (count outs)])
indexes)
(defn findAll [passList]
(def wordList (into [] passList) ))
(println wordList)
(loop [n 0 indexList []]
(println "In here" (get wordList n) wordList)
(if (< n (count wordList))
(do
(def testList wordList)
(def indexes (findInsOuts (get wordList n) testList))
(println (get wordList n) indexes)
(recur (inc n) (conj indexList [(get wordList n) indexes]))))))
passList - это список слов, подобных этому (lol at good), который затем преобразуется в вектор.
Так что по сути findAll вызывает findInsOuts, который просматривает каждое слово в списке и видит, сколько других словначинайте с последней буквы, но сначала удаляйте искомое слово из вектора, прежде чем выполнять какую-либо функцию для предотвращения дублирования.Проблема в том, что этот вектор каким-то образом является изменчивым, поэтому копия вектора в findAll также постоянно удаляет это значение.
Когда я пытаюсь создать новый вектор и затем действовать нав этом векторе все еще происходит то же самое, что означает, что они имеют псевдонимы или совместно используют одну и ту же ячейку памяти.
Как я могу создать новый вектор для использования, который на самом деле является неизменным?
Любая помощь приветствуется