2016-08-01 7 views
0

Ich bin ein Anfänger mit funktionalen Programmierung und ich versuche, ein Labyrinth schön zu drucken.
Hier ist meine FunktionFalsche Argumentnummer, um die Funktion zu wiederholen

(defn pprint-maze 
    [arr row col] 
    (loop [coll arr idx 0] 
    (match [idx] 
     [(_ :guard #(= (mod idx col) 0))] (println "") ; write a \n 
     :else (print "-"))      ; write a wall 
    (when (next coll) 
     (recur (next coll) (inc idx))))) 

Meine Funktion, um die Sammlung und die Größe des Labyrinths und jetzt einen Bindestrich und ein \ n nimmt am Ende der Zeile, nur drucken. Das Problem, das ich es habe ist: Exception in thread "main" clojure.lang.ArityException: Wrong number of args (1) passed to: core/pprint-maze/fn--4873/fn--4874

Ich denke, die Funktion wies darauf hin, ist meine Loop-Funktion, und das Problem zusammenhängt übereinstimmen (denn wenn ich einen kurzen Kommentar zum Spiel Block, alles Arbeit). Ich denke, dass die Übereinstimmung versucht, die Schleifenfunktion mit Null als Argument (die Rückgabe der Funktion println) aufzurufen.

Wie löst man das?

Antwort

7

Die an :guard übergebene Funktion sollte genau ein Argument annehmen, wobei der Wert geschützt wird. Ihre Funktion benötigt keine Argumente.

+2

... weil die '# (...)' Form kein '%' oder '% 1' Token enthält. – Thumbnail

Verwandte Themen