0

Я только начал разрабатывать приложения на ClojureScript, и я использую Figwheel с Reagent и LightTable. Все кажется супер-интерактивным, мне очень нравится идея перезагрузки REPL и кода, но я не могу понять, как можно передать ratom из браузера в REPL. Например, если я разрабатываю tictactoe, и было бы здорово, если я смогу передать текущее состояние платы REPL только для того, чтобы играть с ним там (проверьте поведение некоторых функций и т. Д.). Является ли это возможным?Как передать ratom из браузера в REPL через ClojureScript?

Например, ratom определяется в tictactoe.core имен следующим образом:

(defonce app-state (atom {:text "Welcom to the tictactoe!" 
          :board (new-board 3)})) 

В браузере консоли информация о ratom как показано ниже:

#<Atom: {:text "Welcom to the tictactoe!", :board [[2 2 2] [1 1 2] [1 1 1]]}> 

И когда я пытаюсь получить информацию об атоме в REPL в терминале, находящемся в пространстве имен tictactoe.core:

tictactoe.core=> app-state 
#<Atom: {:text "Welcom to the tictactoe!", :board [[0 0 0] [0 0 0] [0 0 0]]}> 

Что я делаю неправильно? В том же REPL я получаю println так же, как и в браузере.

Что мне делать, чтобы получить значение ratom в REPL?

ответ

1

Вы можете сделать эту форму REPL, если у вас есть ratom, определенный в пространстве имен (не локально для компонента). Переключитесь на пространство имен, где определяется ratom и ссылается на него по имени своего символа.

+0

Я попытался это сделать, и мой атом имеет начальное значение, а не тот, который используется сейчас – Artem

0

Lighttable создает вкладку внутреннего браузера и подключает REPL к этому конкретному экземпляру, поэтому ранее открытая вкладка внешнего браузера больше не синхронизируется с REPL. Таким образом, следующая команда показывает состояние ratom во внутренней вкладке Lighttable.

tictactoe.core=> app-state 

Если подключение к закладке внешнего требуется, то необходимо следовать Вид-> Соединения, нажмите кнопку «Добавить соединение», «External Browser» и следуйте инструкциям.