ns - (ns abc.a) を持つコード ファイルがあるとします。今、repl を開始し、ns- (use-ns 'abc.a) にいます。
ファイル内のコードを変更した場合、repl で ns をリロードするにはどうすればよいですか?
ありがとう、ムルタザ
(require :reload 'abc.a)
またはでコードをホットリロードできます(require :reload-all 'abc.a)
。後者は必要なすべての名前空間も再読み込みしますがabc.a
、前者は再読み込みのみを行いますabc.a
。
を使用load-file
してファイルをリロードできます。
REPL で名前空間を設定すると、名前空間が定義されているファイルからコードをロードしません。ファイルからすべてのコードを実行する必要があります (最も簡単な方法はコピー アンド ペーストです)。
したがって、ファイルが次のようになっている場合:
(ns abc.a)
(def x 3)
user=>(ns abc.a)
REPLで実行すると、プロンプトが表示されますabc.a=>
。名前空間は変更されましたが、まだ何もありません。入力x
して、定義されていないことを確認します。abc.a=>(def x 3)
REPL で ns にコードをロードするのは、 を実行した後でのみです。
x
その後、ファイル内の定義を変更した場合(たとえば(def x 5)
)、REPL に新しい定義を入力するだけで、このコードがリロードされます。
emacs を使用している場合は、この質問を読むことをお勧めします。
emacs と Slime を使用している場合は、ctrl-c ctrl-l を押して現在の名前空間を再読み込みし、そこに含まれるものをすべて再読み込みできます。