Works fine either way - this is just since underscores are required in filenames for real projects, so it's something good for folks to get used to.
41 lines
1.3 KiB
Clojure
41 lines
1.3 KiB
Clojure
(def test-address
|
|
{:street-address "123 Test Lane"
|
|
:city "Testerville"
|
|
:state "TX"})
|
|
|
|
(meditations
|
|
"Destructuring is an arbiter: it breaks up arguments"
|
|
(= __ ((fn [[a b]] (str b a))
|
|
[:foo :bar]))
|
|
|
|
"Whether in function definitions"
|
|
(= (str "First comes love, "
|
|
"then comes marriage, "
|
|
"then comes Clojure with the baby carriage")
|
|
((fn [[a b c]] __)
|
|
["love" "marriage" "Clojure"]))
|
|
|
|
"Or in let expressions"
|
|
(= "Rich Hickey aka The Clojurer aka Go Time aka Macro Killah"
|
|
(let [[first-name last-name & aliases]
|
|
(list "Rich" "Hickey" "The Clojurer" "Go Time" "Macro Killah")]
|
|
__))
|
|
|
|
"You can regain the full argument if you like arguing"
|
|
(= {:original-parts ["Steven" "Hawking"] :named-parts {:first "Steven" :last "Hawking"}}
|
|
(let [[first-name last-name :as full-name] ["Steven" "Hawking"]]
|
|
__))
|
|
|
|
"Break up maps by key"
|
|
(= "123 Test Lane, Testerville, TX"
|
|
(let [{street-address :street-address, city :city, state :state} test-address]
|
|
__))
|
|
|
|
"Or more succinctly"
|
|
(= "123 Test Lane, Testerville, TX"
|
|
(let [{:keys [street-address __ __]} test-address]
|
|
__))
|
|
|
|
"All together now!"
|
|
(= "Test Testerson, 123 Test Lane, Testerville, TX"
|
|
(___ ["Test" "Testerson"] test-address)))
|