sadece hızlı soru Değerleri:Clojure dize İade şu REPL Oturumu Verilen</p> <p>....
Clojure 1.2.0
user=> "bar"
"bar"
user=> (print "bar")
barnil
user=> (defn foo [] ("bar"))
#'user/foo
user=> (foo)
java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn (NO_SOURCE_FILE:0)
user=> (print foo)
#<user$foo [email protected]>nil
user=> (print (foo))
java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn(NO_SOURCE_FILE:0)
neden yazdırma işlevi tarafından gösterilen dize "bar" değil ? Okuyucu, foo'nun (String gibi görünen) dönüş değerini bir işlev olarak çözmeyi deniyor gibi görünüyor mu? Baskı, dizgiyi komut satırına yazacak şekilde nasıl tanımlanmalıdır? Clojure son statment denilen baskı fonksiyonu gösteren bir argüman liste ile çağrıldığında fonksiyon ismi gibi herhangi listenin ilk elemanını "çözmek" çalışması nedeniyle
:-) ben kökünde bir * cwd * yöntemi tanımlayan ile sorunları vardı :-) 18 dakika önce 2 doğru cevap benim projesi. '(Str cwd "src/foo.txt") çağrılması, "[email protected]/foo.txt" 'i döndürerek birinci sınıf bir işlev nesnesi olarak yanlış bir şekilde * cwd *. '(Str (cwd) "src/foo.txt") olarak değiştirilmesi beklendiği gibi çalışır. Şimdi anlıyorum ki, zorunlu bir dilde (Python), bu “len” ifadesi ile len() operasyonu arasındaki farktır. – Droogans