문제

라이브러리를로드하는 데 사용하는 전화를위한 구문을 이해하려고합니다.

(use 'clojure.contrib.duck-streams)

독자가 해당 문자열을 평가하려고 시도하지 않도록 인용 리더 매크로를 Clojure.contrib.duck-streams에 적용 할 때 나에게 의미가 있습니다.

이제 다음을 사용하려면 : 리더 만로드하는 데만 태그 만 사용하려면 다음과 같은 이유가 맞습니다.

(use '[clojure.contrib.duck-streams :only (reader)])

대신에:

(use '[clojure.contrib.duck-streams :only reader])

나는 이것을 사용하기 위해이 벡터의 통과를 의미하기 위해 이것을 읽었지만 REPL은 Symbol에서 ISEQ를 만드는 방법을 모른다. 왜 독자 주변의 파렌스?

이것은 또한 첫 번째 줄과 동일하며 유효합니다.

(use '[clojure.contrib.duck-streams])

따라서 'String are'[String]은 내가 이해하지 못하는 동등한 인수 인 것 같습니다.

도움이 되었습니까?

해결책

:only 기호 목록을 원합니다. 그것이 기능이 작성된 방식입니다. Docstring에 주목하십시오 refer, 어느 use 용도.

 refers to all public vars of ns, subject to filters.
 filters can include at most one each of:

 :exclude list-of-symbols
 :only list-of-symbols
 :rename map-of-fromsymbol-tosymbol

원하는 경우 둘 이상의 기호를 지정할 수 있도록이 방법으로 작성되었습니다.

(use '[clojure.contrib.duck-streams :only (reader writer)])

논의 된 바와 같이 이 최근 게시물, 가변 수의 인수를 가져 오거나 반환하는 함수를 작성하는 경우 단일 항목을 복용/반환하는 경우에도 항상 목록이나 벡터 또는 세트를 가져 오거나 반환하는 것이 좋습니다. 왜냐하면:

  • nil, 종종 "제로 항목"을 나타내는 데 사용되는 것은 seq할 수 있는. 빈 컬렉션도 있습니다 seq할 수 있는.
  • 목록에있는 두 개 이상의 항목이 있습니다 seq할 수 있는.
  • 하나의 항목을 갖는 것만이 의미가 있습니다. seq목록 자체에 넣을 수 있습니다.

하나의 항목 사례를 특별한 경우가되는 것은 어색 할 것입니다. 한 항목을 일종의 퇴화 케이스로 취급하고 목록에 던질 때 더 일관되고 프로그램이 더 쉽습니다.

모두에 유의하십시오 use 걱정하는 것입니다 :only 인수는 심각한 기호의 모음입니다. 즉, 목록, 벡터 및 모든 작업을 설정하는 것을 의미합니다.

(use '[clojure.contrib.duck-streams :only [reader writer]])
(use '[clojure.contrib.duck-streams :only #{reader writer}])

싱글 Symbol 그러나 그렇지 않습니다 seq당신은 당신이하는 예외를 얻는 이유입니다.

Core.clj 이것이 어떻게 구현되는지보고 싶다면.

다른 팁

단순한 "Parens"가 아닙니다. Parens는 목록을 작성하는 구문입니다. 다음과 같은 항목이 나타납니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top