Найти расположение узла в дереве, используя молнии 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 чтобы получить новую карту, содержащую эти изменения.
Другие вопросы по тегам