2016년 10월 7일 금요일

[누구나 쉽게 배우는 클로저] 스터디 2

def 이름 정하기 : 클로저에선 def로 이름에 값을 매긴다.

(def a [1 2 3])

a
;=[1 2 3]
a 라는 이름에 [1 2 3]이라는 값이 매겨졌다. (보통 다른 언어에서는 변수(variable)에 값을 할당한다.(assign)이라고 말하는 언어도 있다.) 그렇게다면 값을 여러개 할당하여 해당 조건 마다 다른 값이 할당되는(또는 매겨지는) 것이 클로저에서도 가능할까?

자바
String a = "a"

String result = null;
if("a".equals(a))
  result = "참참참!!";
else
  result = "거짓거짓";

만약 클로저로 비슷한 것을 만든 다면?

(def a "a")
(def result nil)
(if (= a "a")
  (def result "참참참!!")
  (def result "거짓거짓"))

def만 몇개인가. 그것보다 이게 조금만 복잡해져도... clojure... 이것밖에 안되는 언어인가?!!
걱정하지 말자.

(defn res [a]
  (if (= a "a")
    "참참참"
    "거짓거짓"))
(res "a")
;=>"참참참"

아주 깔끔하다.

댓글 없음:

댓글 쓰기