Daha fazla Clojure tuhaflığı. Tanımlamaya ve çağırmaya çalıştığım bu işleve sahibim. Bu 3 argüman var ama 3 argümanlar ile çağırdığınızda ben 2 argümanlarla da çağırdığınızdaBir Clojure işlevine geçen hata sayısı yanlış alındı
Wrong number of args (1) passed to: solr-query$correct-doc-in-results-QMARK-$fn
[Thrown class clojure.lang.ArityException]
olsun ben
Wrong number of args (2) passed to: solr-query$correct-doc-in-results-QMARK-
[Thrown class clojure.lang.ArityException]
olsun ve ben 4 argümanları ile demenden
olsun(defn correct-doc-in-results? [query results docid]
"Check if the docid we expected is returned in the results"
(some #(.equals docid) (map :id (get results query))))
: burada
Wrong number of args (4) passed to: solr-query$correct-doc-in-results-QMARK-
[Thrown class clojure.lang.ArityException]
fonksiyonunun tanımıdır
(correct-doc-in-results? "FLASHLIGHT" all-queries "60184")
kimse ne olup bittiğini bir fikrin var:
ve burada (emacs'taki REPL kullanarak swank itibaren) diyoruz çalışıyorum nasıl? Neden 3'ü geçtiğimde sadece 1 argümandan geçtiğimi düşünüyorum, ama 2 veya 4 için doğru mu? Henüz çok akıcı bir clojure programcısı değilim, ama bir işlevi tanımlamak oldukça basit.
Elbette. Basit açıklama için teşekkürler. –
@Brian aslında hatanın anonim işlevi sıfır args (% yok) istemesi ve "bazı" ile çağrıldığında bir tane almasıdır. Tabii ki, eğer işlev aslında * argümanlar olmadan çağrıldıysa, o zaman sadece bir argümanla '.equals'ı çağırmaya çalışarak başka bir hataya sebep olur. – amalloy
Haklısınız, cevabımı düzenleyeceğim. –