0

我刚开始在ClojureScript中开发应用程序,我正在使用Figwheel与试剂和LightTable。一切似乎都是超级互动的,我真的很喜欢REPL和代码重新加载的想法,但我无法弄清楚如何从浏览器将REPL传输到REPL。例如,如果我正在开发tictactoe,如果我能够将当前的棋盘状态转移到REPL,然后在其中进行游戏(查看某些功能行为等),那就太棒了。可能吗?如何通过ClojureScript将ratom从浏览器转移到REPL?

例如,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与浏览器中的相同。

我该怎么做才能在REPL中获得ratom的价值?

回答

1

如果您在名称空间(不是本地组件)中定义了一个ratom,则可以执行此操作。切换到一个命名空间,在该命名空间中定义了一个ratom并通过它的符号名称引用它。

+0

我试过这样做,我的原子有它的初始值,而不是现在使用的那个 – Artem

0

Lighttable创建内部浏览器选项卡并将REPL连接到该特定实例,因此之前打开的外部浏览器选项卡不再与REPL同步。因此,以下命令显示内部Lighttable选项卡中的鼠标状态。

tictactoe.core=> app-state 

如果需要连接到外部选项卡,然后一个应该遵循查看 - >连接,单击“添加连接”,“外部浏览器”,并按照指示。