- 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이 실제 컬렉션이 아닌 경우에도 예외가 발생할 것이다. 물론 키가 키워드나 심볼이 아니고 스트링이나 수이면 컬렉션을 함수로 사용하는 것이 좋을 것이다.