2015-10-11 1 views
3

En Python 3, si vous voulez décompresser le premier et reste d'une liste (ou tuple), vousdéstructuration/Déballer premier et le repos dans Clojure

x, *y = [1, 2, 3] 
#x = 1, y = [2, 3] 

Comment faites-vous cela à l'intérieur d'un bloc let à Clojure? J'ai essayé :as parts et

(defn destructurer [vec] 
    (let [[beginning the-rest :as parts] vec] 
    [beginning the-rest] 
    ) 
) 
;; (destructer [1 2 3]) 
;; [1 2] <- missing the 3 

Répondre

5

Vous devez ajouter un & pour faire la prochaine capture de liaison rest:

(defn destructurer [vec] 
    (let [[beginning & the-rest :as parts] vec] 
    [beginning the-rest] 
    ) 
) 

Il y a un joli github essentiel sur les capacités destructuration de clojure here.