- Learn about Wiki
- Lectures
- Study
- Tips
(not (empty? some-collection))
보다는
(seq {}) ;=> nil (seq []) ;=> nil (seq ()) ;=> nil (seq nil) ;=> nil
벡터는 인덱스를 키로 하는 맵.
(def v [1 2 3]) (assoc v 0 -12 1 4 2 :p 3 'k) ;=> [-12 4 :p k]
([:a :b :c] 2) ;= :c ({:a 5 :b 6} :b) ;= 6 ({:a 5 :b 6} :c 7) ;= 7 (#{1 2 3} 3) ;= 3
(:b {:a 5 :b 6}) ;= 6 (:c {:a 5 :b 6} 7) ;= 7 (:d #{:a :b :c}) ;= nil
(defn get-foo [map] (:foo map)) ;= #'user/get-foo (get-foo nil) ;= nil (defn get-bar [map] (map :bar)) ;= #'user/get-bar (get-bar nil) ;= #<NullPointerException java.lang.NullPointerException>
컬렉션의 경우 예외를 발생하지만, 키는 단지 nil을 리턴한다. 게다가 위 코드에서 map이 실제 컬렉션이 아닌 경우에도 예외가 발생할 것이다. 물론 키가 키워드나 심볼이 아니고 스트링이나 수이면 컬렉션을 함수로 사용하는 것이 좋을 것이다.
((juxt :a :b) {:a 1 :b 2 :c 3 :d 4}) ;=> [1 2]
(map :name [{:age 21 :name "David"} {:gender :f :name "Suzanne"} {:name "Sara" :location "NYC"}]) ;= ("David" "Suzanne" "Sara")
(some #{1 3 7} [0 2 4 5 6]) ;= nil (some #{1 3 7} [0 2 3 4 5 6]) ;= 3
(filter :age [{:age 21 :name "David"} {:gender :f :name "Suzanne"} {:name "Sara" :location "NYC"}]) ;= ({:age 21, :name "David"}) (filter (comp (partial <= 25) :age) [{:age 21 :name "David"} {:gender :f :name "Suzanne" :age 20} {:name "Sara" :location "NYC" :age 34}]) ;= ({:age 34, :name "Sara", :location "NYC"})