我刚开始用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值?
答案 0 :(得分:1)
如果您在命名空间中定义了一个ratom(不是在组件的本地),则可以从REPL中执行此操作。切换到命名空间,其中定义了一个ratom并通过其符号名称引用它。
答案 1 :(得分:0)
Lighttable正在创建内部浏览器选项卡并将REPL连接到该特定实例,因此先前打开的外部浏览器选项卡不再与REPL同步。因此,以下命令显示内部Lighttable选项卡中的ratom状态。
tictactoe.core=> app-state
如果需要连接到外部标签,则应按照View-&gt; Connections,单击“添加连接”,“外部浏览器”并按照说明操作。