Найти расположение узла в дереве, используя молнии Clojure
У меня есть дерево неизвестной структуры. Во-первых, я хочу найти узел, содержащий строку текста "Нечто". Затем, после определения местоположения строки в дереве, я хочу обновить другой узел относительно местоположения строки. Данные представляют собой глубоко вложенную карту с несколькими ветвями списков.
Это возможно на молнии?
Я изучил этот подход к редактированию деревьев: http://www.exampler.com/blog/2010/09/01/editing-trees-in-clojure-with-clojurezip/. Проблема в том, что я заранее не знаю, где находится строка.
1 ответ
Решение
Да! Это именно та молния, для которой она предназначена.
- Повторно вызывайте zip /next, пока не найдете нужный вам узел.
- Тогда позвони
zip/path
чтобы узнать, где вы находитесь относительно корня. - Тогда позвони
zip/up
,zip/down
,zip/left
и т.д., чтобы добраться до узла, чтобы изменить. - обновить узел
- вызов
zip/root
чтобы получить новую карту, содержащую эти изменения.