Tôi nhận được một số hành vi lạ khi kiểm tra xem biểu tượng có thể được giải quyết hay không.Clojure: giải quyết biểu tượng tuyên bố
user=> ok
CompilerException java.lang.RuntimeException: Unable to resolve symbol: ok in this context, compiling:(NO_SOURCE_PATH:0)
user=> (resolve 'ok)
nil
user=> (if (resolve 'ok) "bla" (def ok 'ok))
"bla"
user=> ok
#<Unbound Unbound: #'user/ok>
user=> (def ok 'ok)
#'user/ok
user=> ok
ok
Bất kỳ ai cũng có thể cho tôi biết điều này có thể đến từ đâu? Hành vi này có được dự định không?
Bạn đang sử dụng phiên bản Clojure nào? Tôi không thấy điều này trên 1.2.1 – spacemanaki
@spacemanaki: Thú vị, tôi chỉ sao chép điều này trong cả 1.2.1 và 1.3 Điều gì đó lạ chắc chắn đang xảy ra. –
Sai lầm của tôi, tham chiếu thứ hai đến 'ok' dẫn đến một ngoại lệ thay vì trả về một đối tượng' # ', và tôi không chú ý. Đối với tôi, trên 1.2.1 '(giải quyết 'ok)' bên trong 'if' không dẫn đến' ok' được khai báo. –
spacemanaki