2016년 11월 13일 일요일

[누구나 쉽게 배우는 클로저] [함수(function)][destructuring] study 10




DESTRUCTURING


DESTRUCTURING은 집합에서 이름에 간단히 값을 매기기 위한 아이디어를 바탕으로 한다.

(defn my-first
  [[first-thing-in-vector]]
  first-thing-in-vector)
(my-first [1 2 3 4 5 6])
1

my-first 안에 들어있는 인자가 벡터로 되어있는 것을 보자. "이 인자는 벡터!"라는 것을 말해주는 것이다. 이 벡터안에 있는 것들을 마음데로 이름 붙이고 또 나머지 매개변수도 쓸 수 있다.

(defn students
  [[first second & others]]
  (print (str "첫 번째 학생: " first))
  (print (str ", 두 번째 학생: " second))
  (print (str ", 나머지 학생: " (clojure.string/join ", " others))))

(students ["Kim" "Min" "Nam" "Hwang" "Ku"])

이번에는 벡터가 아닌 맵으로 해보자. 맵에 있는 내용과 나의 매게변수와 연결을 할 수 있는데 자세한 것은 밑에서 구경해보자.
(defn coordinate
  [{x :x-axis y :y-axis}]
    (println (str "x축: " x))
    (println (str "y축: " y)))
(coordinate {:x-axis 24 :y-axis 44})
더 간결하게
(defn coordinate
  [:keys {x-axis y-axis}]
  (println (str "x축: " x-axis))
  (println (str "y축: " y-axis)))
:as를 사용하여 원래의 맵에 접근할 수 있다.
(defn coordinate
  [:keys [x-axis y-axis] :as args}]
  (println (str "x축: " x-axis))
  (println (str "y축: " y-axis)))

댓글 없음:

댓글 쓰기