Clojureでは、名前空間がシンボルをVarsにマップすることが分かりました。私はその後、このClojure特殊フォーム `def`は常に新しいVarを作成しますか?
user=> (def x 3)
#'user/x
を言うならば、私は新しいブランドにシンボルx
リバウンドしまし
user=> (def x 5)
#'user/x
user=> #'x
#'user/x
user=> (type #'x)
clojure.lang.Var
user=> x
5
を今すぐ:だから我々は(ここではデフォルトの名前空間で)このようなヴァールにシンボルx
をマッピングすることができますVarまたは私は上記で作成した同じVarの値を更新しましたか?どうすればわかるのですか?
私は、「Javaのフィールド、バース、リファレンス、エージェントはClojureで変更可能です」という文章を読んでいるので、後者だと思っています。 Clojure Reference page on Varsでは、私はそれが証明として保持されているかどうかはわかりません。
あなたの勘違いは、この質問で確認されたようです:http://stackoverflow.com/questions/16447621/difference-between-using-def-to-update-a-var-and-alter-var-root – jmargolisvt
良い発見。 ...私は、PythonやRubyの 'id'のようなものがあることを期待していました。 –