如何通过ClojureScript将ratom从浏览器传输到REPL?

时间:2016-12-11 13:25:14

标签: clojurescript read-eval-print-loop lighttable reagent figwheel

我刚开始用ClojureScript开发应用程序,我正在使用带有Reagent和LightTable的Figwheel。一切似乎都是超级互动的,我真的很喜欢REPL和代码重新加载的想法但我无法弄清楚如何将ratom从浏览器传输到REPL。例如,如果我正在开发tictactoe,如果我能够将当前的板状态转移到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值?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

tictactoe.core=> app-state

如果需要连接到外部标签,则应按照View-&gt; Connections,单击“添加连接”,“外部浏览器”并按照说明操作。