Title here
Summary here
Switch statements express conditionals across many branches.
Here’s a basic switch.
(defn main []
(let [i 2]
(println "Write" i "as")
(case i
1 (println "one")
2 (println "two")
3 (println "three"))))
(main)You can use commas to separate multiple expressions in the same case statement. We use the optional default case in this example as well.
(defn main []
(let [today (.getDay (js/Date.))]
(case today
0 1 (println "It's the weekend")
(println "It's a weekday"))))
(main)switch without an expression is an alternate way to express if/else logic. Here we also show how the case expressions can be non-constants.
(defn main []
(let [hour (.getHours (js/Date.))]
(if (< hour 12)
(println "It's before noon")
(println "It's after noon"))))
(main)A type switch compares types instead of values. You can use this to discover the type of an interface value. In this example, the variable i will have the type corresponding to its clause.
(defn what-am-i [i]
(cond
(boolean? i) (println "I'm a bool")
(integer? i) (println "I'm an int")
:else (println (str "Don't know type " (type i)))))
(what-am-i true)
(what-am-i 1)
(what-am-i "hey")To run the program, put the code in a .clj file and use clojure to execute it.
$ clojure -M switch.clj
Write 2 as two
It's a weekday
It's after noon
I'm a bool
I'm an int
Don't know type string