mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-23 09:41:36 +00:00
Add as-> macro documentation (#2392)
* Add as-> macro documentation * Add as-> in english clojure.html.markdown
This commit is contained in:
parent
e7b9774eee
commit
b552fe30c2
@ -289,6 +289,19 @@ keymap ; => {:a 1, :b 2, :c 3}
|
|||||||
(into [])) ;=> (into [] (filter odd? (map inc (range 10)))
|
(into [])) ;=> (into [] (filter odd? (map inc (range 10)))
|
||||||
; Result: [1 3 5 7 9]
|
; Result: [1 3 5 7 9]
|
||||||
|
|
||||||
|
; When you are in a situation where you want more freedom as where to
|
||||||
|
; put the result of previous data transformations in an
|
||||||
|
; expression, you can use the as-> macro. With it, you can assign a
|
||||||
|
; specific name to transformations' output ans use it as a
|
||||||
|
; placeholder in your chained expressions:
|
||||||
|
|
||||||
|
(as-> [1 2 3] input
|
||||||
|
(map inc input);=> You can use last transform's output at the last position
|
||||||
|
(nth input 4) ;=> and at the second position, in the same expression
|
||||||
|
(conj [4 5 6] input [8 9 10])) ;=> or in the middle !
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; Modules
|
; Modules
|
||||||
;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
@ -275,7 +275,7 @@ ressemblent à toutes les autres formes:
|
|||||||
(let [name "Urkel"]
|
(let [name "Urkel"]
|
||||||
(print "Saying hello to " name)
|
(print "Saying hello to " name)
|
||||||
(str "Hello " name)) ; => "Hello Urkel" (prints "Saying hello to Urkel")
|
(str "Hello " name)) ; => "Hello Urkel" (prints "Saying hello to Urkel")
|
||||||
|
|
||||||
; Utilisez les Threading Macros (-> et ->>) pour exprimer plus
|
; Utilisez les Threading Macros (-> et ->>) pour exprimer plus
|
||||||
; clairement vos transformations, en y pensant de manière multi-niveaux.
|
; clairement vos transformations, en y pensant de manière multi-niveaux.
|
||||||
|
|
||||||
@ -284,10 +284,10 @@ ressemblent à toutes les autres formes:
|
|||||||
; de la forme suivante, constituant à chaque fois un nouvel étage
|
; de la forme suivante, constituant à chaque fois un nouvel étage
|
||||||
; de transformation. Par exemple:
|
; de transformation. Par exemple:
|
||||||
(->
|
(->
|
||||||
{:a 1 :b 2}
|
{:a 1 :b 2}
|
||||||
(assoc :c 3) ;=> Génère ici (assoc {:a 1 :b 2} :c 3)
|
(assoc :c 3) ;=> Génère ici (assoc {:a 1 :b 2} :c 3)
|
||||||
(dissoc :b)) ;=> Génère ici (dissoc (assoc {:a 1 :b 2} :c 3) :b)
|
(dissoc :b)) ;=> Génère ici (dissoc (assoc {:a 1 :b 2} :c 3) :b)
|
||||||
|
|
||||||
; Cette expression est ré-écrite en:
|
; Cette expression est ré-écrite en:
|
||||||
; (dissoc (assoc {:a 1 :b 2} :c 3) :b)
|
; (dissoc (assoc {:a 1 :b 2} :c 3) :b)
|
||||||
; et est évaluée en : {:a 1 :c 3}
|
; et est évaluée en : {:a 1 :c 3}
|
||||||
@ -302,6 +302,14 @@ ressemblent à toutes les autres formes:
|
|||||||
(into [])) ;=> Génère ici (into [] (filter odd? (map inc (range 10))), ce qui est évalué au final à;
|
(into [])) ;=> Génère ici (into [] (filter odd? (map inc (range 10))), ce qui est évalué au final à;
|
||||||
; [1 3 5 7 9]
|
; [1 3 5 7 9]
|
||||||
|
|
||||||
|
; Quand vous êtes dans une situation où vous voulez plus de liberté pour choisir
|
||||||
|
; où mettre le résultat des étages précédents, vous pouvez utiliser la
|
||||||
|
; macro as->. Avec cette macro, donnez un nom spécifique au résultat de la transformation
|
||||||
|
; précédente pour le placer, à votre guise, où bon vous semble dans l'étage courant:
|
||||||
|
(as-> [1 2 3] input
|
||||||
|
(map inc input);=> Utilisation du résultat en dernière position
|
||||||
|
(nth input 4) ;=> et en deuxième position, dans la même expression
|
||||||
|
(conj [4 5 6] input [8 9 10])) ;=> ou au milieu !
|
||||||
|
|
||||||
; Modules
|
; Modules
|
||||||
;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;
|
||||||
@ -370,7 +378,7 @@ ressemblent à toutes les autres formes:
|
|||||||
; STM
|
; STM
|
||||||
;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
; La mémoire logiciel transactionnelle ("Software Transactional Memory")
|
; La mémoire logiciel transactionnelle ("Software Transactional Memory")
|
||||||
; est le mécanisme que Clojure utilise pour gérer les états persistents.
|
; est le mécanisme que Clojure utilise pour gérer les états persistents.
|
||||||
; Il y a plusieurs formes en Clojure qui utilisent cela.
|
; Il y a plusieurs formes en Clojure qui utilisent cela.
|
||||||
|
|
||||||
@ -384,7 +392,7 @@ ressemblent à toutes les autres formes:
|
|||||||
(swap! my-atom assoc :a 1) ; Définit my-atom comme le résultat de (assoc {} :a 1)
|
(swap! my-atom assoc :a 1) ; Définit my-atom comme le résultat de (assoc {} :a 1)
|
||||||
(swap! my-atom assoc :b 2) ; Définit my-atom comme le résultat de (assoc {:a 1} :b 2)
|
(swap! my-atom assoc :b 2) ; Définit my-atom comme le résultat de (assoc {:a 1} :b 2)
|
||||||
|
|
||||||
; Use '@' to dereference the atom and get the value
|
; Use '@' to dereference the atom and get the value
|
||||||
my-atom ;=> Atom<#...> (Renvoie l'objet Atom)
|
my-atom ;=> Atom<#...> (Renvoie l'objet Atom)
|
||||||
@my-atom ; => {:a 1 :b 2}
|
@my-atom ; => {:a 1 :b 2}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user