Other Useful Functions and Macros
Other Useful Functions and Macros: Clojure Reference 문서 번역
Boolean and comparison functions: = == identical? not= not true? false? nil?
Creating functions
Function | Example expression | Return value |
---|---|---|
fn | (map (fn [x] (+ 2 x)) [1 2 3]) |
(3 4 5) |
#() reader macro | (map #(+ 2 %) [1 2 3]) |
(3 4 5) |
partial | (map (partial + 2) [1 2 3]) |
(3 4 5) |
comp | (map (comp - *) [2 4 6] [1 2 3]) |
(-2 -8 -18) |
complement | (map (complement zero?) [3 2 1 0]) |
(true true true false) |
constantly | (map (constantly 9) [1 2 3]) |
(9 9 9) |
Printing
Several functions are provided to print objects to the output stream that is the current value of
*out*
. The -str versions bind*out*
to a StringWriter, print to that, and return the resulting string. pr prints the object(s), separated by spaces if there is more than one. prn does the same and follows it with a newline. print and println call pr and prn respectively, with*print-readably*
(which defaults to true) bound to nil, which causes strings to print without surrounding quotes or any escape character encoding, and characters to print without the leading '\', or any escape character encoding. By default, pr and prn print in a way that objects can be read by the reader, while print and println produce output for human consumption. When*print-readably*
is non-nil, the printing of metadata is toggled by*print-meta*
, which defaults to nil.
객체를 output stream (*out*
의 현재 값)으로 출력하기 위한 몇 가지 함수가 있습니다.
-str
이 붙은 버전은 StringWriter를 사용해서 출력을 하고, 결과는 string으로 리턴합니다.
- pr은 객체를 출력하며, 객체가 여러개 있을 경우에는 구분자로 공백을 넣어줍니다.
- prn도 같은 일을 하지만 마지막에 newline을 붙여줍니다.
- print와 println은 각각 pr과 prn을 호출하며,
*print-readably*
(기본값: true)을 nil로 설정해서 쓴다는 특징이 있습니다.- 이로 인해 string은 인용 부호나 이스케이프 문자 없이 출력되고, character는 앞에 있는 '\'가 제외된 상태로 출력됩니다.
- 기본적으로 pr과 prn은 reader가 읽을 수 있는 형태로 출력하고, print와 println은 사람이 읽기 쉬운 형태로 출력합니다.
*print-readably*
값이 nil 아니라면, 메타데이터의 출력은*print-meta*
값으로 토글됩니다.*print-meta*
의 기본값은 nil 입니다.
Related functions
Print to
*out*
: pr prn print println newlinePrint to string: pr-str prn-str print-str println-str with-out-str
Regex Support
Regex patterns can be compiled at read-time via the
#"pattern"
reader macro, or at run time with re-pattern. Both forms produce java.util.regex.Pattern objects.
정규식 패턴은 #"pattern"
리더 매크로를 사용해서 read-time에 컴파일하거나, re-pattern으로 run time에 컴파일할 수 있습니다.
두 가지 form 모두 java.util.regex.Pattern 객체를 생성합니다.
user=> (re-seq #"[0-9]+" "abs123def345ghi567")
("123" "345" "567")
user=> (re-find #"([-+]?[0-9]+)/([0-9]+)" "22/7")
["22/7" "22" "7"]
user=> (let [[a b c] (re-matches #"([-+]?[0-9]+)/([0-9]+)" "22/7")]
[a b c])
["22/7" "22" "7"]
user=> (re-seq #"(?i)[fq].." "foo bar BAZ QUX quux")
("foo" "QUX" "quu")