私はこのようなものがあります:なぜ私はクロージャにdefrecordをバインドできませんか?
user> (defrecord vertex [id val]) => user.vertex
user> (def v vertex) => #'user/v
user> (= v vertex) => true
user> (type v) => java.lang.Class
user> (type vertex) => java.lang.Class
user> (vertex. 1 2) => #user.vertex{:id 1, :val 2}
user> (v. 1 2) => "Unable to resolve classname v"
user> (new v 1 2) => "Unable to resolve classname v"
だから、基本的に、私は別の名前に頂点をバインドすることはできませんが。関数にdefrecord型を渡そうとすることと同じこと、let、または他の何か。 なぜこのような場合ですか?一時的にdefrecordの名前を変更するにはどうすればよいですか?
私は、Javaの相互運用性と関係があるいくつかのトリックだと思います。
これは意味がありますが、私はクローゼッとどのようにして再定義/名前を変更することができるのかというと、クラス名をローカル変数にバインドできないことに驚きました。特に '(= v vertex)' trueを返します – Sonicsmooth