code

Clojure 1.4에서 require 내에서 refer의 사용은 무엇입니까?

codestyles 2020. 10. 27. 08:15
반응형

Clojure 1.4에서 require 내에서 refer의 사용은 무엇입니까?


어떤 이점을 사용하여 않습니다 :refer:require사용하여 이상이 :only:use? 다음은 동의어입니까?

(ns so.example (:use [my.lib :only [function]]))

(ns so.example (:require [my.lib :refer [function]]))

에 추가 :refer하는 주요 아이디어 :require는를 완전히 제거하고 :use한 명의 연산자 만 다른 패키지를로드하도록하는 것입니다. 기존 :use에뮬레이트 할 수 있습니다 (:require [my.lib :refer :all])...


예, 동등합니다.

:refer:require빌드 네임 스페이스에 필요한 기본 작업입니다. :use더 편리합니다

  • :require 클래스가로드되도록합니다.
  • :refer 실제로 맵 (실제로는 두 개의 맵) 인 이름 공간에 항목을 추가합니다.
  • :use이다 :refer+:require

그렇게 보일 수도 있지만 네임 스페이스에는 마법이 없습니다.

이렇게 네임 스페이스를 만들면

(ns so.example (:use my.lib))

: require와 동등한 것은 다음과 같습니다.

(ns so.example (:require [my.lib :refer [function1 function2 function3 
                                         list every function in example 
                                         here and remember to keep it 
                                         up to date ]]))

1.4.0 릴리스부터는 더 이상 사용할 이유가 없습니다. 대신 require : refer를 사용하십시오. Clojure 1.4.0 변경 로그에서 : "require는 이제 : refer 옵션을 사용할 수 있습니다. : refer는 네임 스페이스에서 참조 할 기호 목록을 가져 오거나 모든 공용 변수를 가져 오려면 : all을 사용합니다." ( https://8thlight.com/blog/colin-jones/2010/12/05/clojure-libs-and-namespaces-require-use-import-and-ns.html에서 )

참고 URL : https://stackoverflow.com/questions/10358149/in-clojure-1-4-what-is-the-use-of-refer-within-require

반응형