, bir değer genellikle iki yoldan biriyle bağlı olduğu: genellikle let
açıklamada (bir ad alanı eleme olmadan
yerli veya fn
/loop
args)
Bu, bloğun kapsamı dışında başvuruda bulunmayan değerler içindir (bunlar bir func argümanı olarak sağlanmışlarsa) bloğun içinde veya bloğun dönüş değerinde). ad kapsamı ile
vars, genellikle def
(veya defn
gibi ikincil bir makro)
Bu ad erişebilir yerde erişilebilir olacaktır ad kapsamı, erişilebilir olmalıdır değerler içindir. var var Bu kodda
user> (declare foo)
#'user/foo
user> (foo)
IllegalStateException Attempting to call unbound fn: #'user/foo clojure.lang.Var$Unbound.throwArity (Var.java:43)
:
hatası gerçek bir tanımı yapılmaksızın çağırmak sonra bir var oluşturmak için declare
kullanarak ve neden olur (bir ilişkisiz fn ulaşmaya çalışıyorum) (declare
bunu oluşturdu), ancak hiçbir değer atanmadı. Bir çağrılabilir değere bağlı olmalıdır
user> (defn foo [] "OK")
#'user/foo
user> (foo)
"OK"
user>
Somewhere Kodunuzla bir kısmını ya da bir var ilan etti kullandığınız kütüphanenin kodunu: Yani, bağlayıcı bir var bağlayıcı ikinci tür gerekir ancak doğru şekilde başlatılmamış. Kütüphanede aradığınız bir çeşit init
işlevi var mı? Belki de tanım görmeden önce ihtiyaç duyacağınız bir ad alanı var mı?
Kod görmeden bilmek zor. – Chiron