User Tools

Site Tools


tips:clojure:컬렉션_잘_사용하기

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
tips:clojure:컬렉션_잘_사용하기 [2013/01/31 10:20]
psk810 [assoc으로 벡터 갱신]
tips:clojure:컬렉션_잘_사용하기 [2019/02/04 14:26] (current)
Line 24: Line 24:
 </​code>​ </​code>​
  
-===== 컬렉션 함수보다는 ​키워드/​심볼 함수가 좋다 ​=====+===== 컬렉션 함수와 키워드/​심볼 함수 =====
  
 ==== 컬렉션은 함수다 ==== ==== 컬렉션은 함수다 ====
Line 67: Line 67:
 컬렉션의 경우 예외를 발생하지만,​ 키는 단지 nil을 리턴한다. 게다가 위 코드에서 map이 실제 컬렉션이 아닌 경우에도 예외가 발생할 것이다. 물론 키가 키워드나 심볼이 아니고 스트링이나 수이면 컬렉션을 함수로 사용하는 것이 좋을 것이다. 컬렉션의 경우 예외를 발생하지만,​ 키는 단지 nil을 리턴한다. 게다가 위 코드에서 map이 실제 컬렉션이 아닌 경우에도 예외가 발생할 것이다. 물론 키가 키워드나 심볼이 아니고 스트링이나 수이면 컬렉션을 함수로 사용하는 것이 좋을 것이다.
  
 +==== 고계함수에서 사용하기 ====
 +
 +<code clojure>
 +((juxt :a :b) {:a 1 :b 2 :c 3 :d 4})
 +;=> [1 2]
 +</​code>​
 +
 +<code clojure>
 +(map :name [{:age 21 :name "​David"​}
 +            {:gender :f :name "​Suzanne"​}
 +            {:name "​Sara"​ :location "​NYC"​}])
 +;= ("​David"​ "​Suzanne"​ "​Sara"​)
 +</​code>​
 +
 +<code clojure>
 +(some #{1 3 7} [0 2 4 5 6])
 +;= nil
 +(some #{1 3 7} [0 2 3 4 5 6])
 +;= 3
 +</​code>​
 +
 +<code clojure>
 +(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"​})
 +</​code>​
  
tips/clojure/컬렉션_잘_사용하기.1359627651.txt.gz · Last modified: 2019/02/04 14:26 (external edit)