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 

如果需要連接到外部選項卡,然後一個應該遵循查看 - >連接,單擊「添加連接」,「外部瀏覽器」,並按照指示。