네 가지 방식의 Clojure 기능
오늘은 Clojure에서 함수를 생성하는 4가지 방법을 빠르게 보여드리고자 합니다.
코드의 각 블록은 주어진 정수 인수를 단순히 두 배로 만드는
doubler
함수를 정의합니다.데프
이것은 본질적으로 Clojure에서 함수를 정의하는 표준 방법입니다: name, args, function body.
(defn doubler [n] (* 2 n))
def와 fn
(def doubler (fn [n] (* 2 n)))
이것은 defn
의 장황한 변형이며 본질적으로 defn
가 무대 뒤에서 하는 일입니다. 여기에 익명 함수(fn
가 있는 이름에 바인딩된 def
)가 있습니다.
함수 리터럴
또한 Clojure는 fn
보다 더 짧은 구문으로 함수를 정의할 수 있습니다. #
문자는 함수 리터럴을 정의할 수 있습니다. 이 구문을 사용하면 명명된 인수를 가질 수 없지만 대신 위치 참조를 얻을 수 있습니다. %1 %2 %3
(def doubler3 #(* 2 %1))
부분 사용
이제 흥미로워집니다. Clojure는 가장 훌륭하고 뛰어난partial
기능을 제공합니다. partial
함수는 함수와 일부 인수를 수락하고 원래 제공된 인수와 나머지 필수 인수를 사용하여 원래 함수를 호출하는 새 함수를 반환합니다.
아 설명이 어려워서 보여드리겠습니다. doubler
를 사용하는 partial
입니다.
(def doubler (partial * 2))
무슨 일이?
def doubler
는 단순히 이름을 지정하는 것이므로 무시합시다.
진짜 흥미로운 부분
(partial * 2)
partial
에 대한 호출은 함수*
와 인수2
를 허용하고 (* 2)
호출에 제공하기 위해 더 많은 인수를 허용하는 새 함수를 반환합니다.
새 함수는 주어진 모든 인수를 가져와 우리가 직접 호출한 것처럼 (* 2)
에 제공합니다.
(def doubler (partial * 2))
(doubler 10) ; => 20 == (* 2 10)
(doubler 3 4) ; => 24 == (* 2 3 4)
여러 인수를 취한다는 점에서 처음 두 함수doubler
와 완전히 같지 않다는 것을 알 수 있습니다. 이것이 partial
의 힘과 유연성입니다.
Reference
이 문제에 관하여(네 가지 방식의 Clojure 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/sdball/clojure-functions-in-four-ways-1hi5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(defn doubler [n] (* 2 n))
(def doubler (fn [n] (* 2 n)))
이것은
defn
의 장황한 변형이며 본질적으로 defn
가 무대 뒤에서 하는 일입니다. 여기에 익명 함수(fn
가 있는 이름에 바인딩된 def
)가 있습니다.함수 리터럴
또한 Clojure는 fn
보다 더 짧은 구문으로 함수를 정의할 수 있습니다. #
문자는 함수 리터럴을 정의할 수 있습니다. 이 구문을 사용하면 명명된 인수를 가질 수 없지만 대신 위치 참조를 얻을 수 있습니다. %1 %2 %3
(def doubler3 #(* 2 %1))
부분 사용
이제 흥미로워집니다. Clojure는 가장 훌륭하고 뛰어난partial
기능을 제공합니다. partial
함수는 함수와 일부 인수를 수락하고 원래 제공된 인수와 나머지 필수 인수를 사용하여 원래 함수를 호출하는 새 함수를 반환합니다.
아 설명이 어려워서 보여드리겠습니다. doubler
를 사용하는 partial
입니다.
(def doubler (partial * 2))
무슨 일이?
def doubler
는 단순히 이름을 지정하는 것이므로 무시합시다.
진짜 흥미로운 부분
(partial * 2)
partial
에 대한 호출은 함수*
와 인수2
를 허용하고 (* 2)
호출에 제공하기 위해 더 많은 인수를 허용하는 새 함수를 반환합니다.
새 함수는 주어진 모든 인수를 가져와 우리가 직접 호출한 것처럼 (* 2)
에 제공합니다.
(def doubler (partial * 2))
(doubler 10) ; => 20 == (* 2 10)
(doubler 3 4) ; => 24 == (* 2 3 4)
여러 인수를 취한다는 점에서 처음 두 함수doubler
와 완전히 같지 않다는 것을 알 수 있습니다. 이것이 partial
의 힘과 유연성입니다.
Reference
이 문제에 관하여(네 가지 방식의 Clojure 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/sdball/clojure-functions-in-four-ways-1hi5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(def doubler3 #(* 2 %1))
이제 흥미로워집니다. Clojure는 가장 훌륭하고 뛰어난
partial
기능을 제공합니다. partial
함수는 함수와 일부 인수를 수락하고 원래 제공된 인수와 나머지 필수 인수를 사용하여 원래 함수를 호출하는 새 함수를 반환합니다.아 설명이 어려워서 보여드리겠습니다.
doubler
를 사용하는 partial
입니다.(def doubler (partial * 2))
무슨 일이?
def doubler
는 단순히 이름을 지정하는 것이므로 무시합시다.진짜 흥미로운 부분
(partial * 2)
partial
에 대한 호출은 함수*
와 인수2
를 허용하고 (* 2)
호출에 제공하기 위해 더 많은 인수를 허용하는 새 함수를 반환합니다.새 함수는 주어진 모든 인수를 가져와 우리가 직접 호출한 것처럼
(* 2)
에 제공합니다.(def doubler (partial * 2))
(doubler 10) ; => 20 == (* 2 10)
(doubler 3 4) ; => 24 == (* 2 3 4)
여러 인수를 취한다는 점에서 처음 두 함수
doubler
와 완전히 같지 않다는 것을 알 수 있습니다. 이것이 partial
의 힘과 유연성입니다.
Reference
이 문제에 관하여(네 가지 방식의 Clojure 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sdball/clojure-functions-in-four-ways-1hi5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)