2015-01-13 3 views
1

내가 항목이 기존의 기능을 참조하는에 EDN 구성 파일, 예를 들어,이 파일 :통화 기능

:attribute-modules {:content {:class lohan.extractors.content/process} 
        :schema {:class lohan.extractors.schema/process} 
        :label {:class lohan.extractors.label/process} 
        :user {:class lohan.extractors.user/process} 
        :env  {:class lohan.extractors.env/process}} 

사용 clojure.edn/읽기 EDN이 항목은 기호로 읽을 수 있지만 내가있다 런타임에 호출 할 수 있기를 원합니다. 이 기능의 목적은 사용자가 자신의 기능 세트를 제공 할 수있는 방법을 제공하는 것입니다.

어떻게하면됩니까?

답변

7

resolve을 사용하여 Symbol에서 참조하는 var에있는 함수를 호출 할 수 있습니다. 당신이 그 기호를 사용하여 +를 호출하고 싶다면

예를 들어, 당신은 사용할 수 있습니다

((resolve '+) 1 2) 
;=> 3 

따라서, 귀하의 예제를 사용하여 당신이 할 수 있습니다

((resolve (get-in (clojure.edn/read-string "{:content {:class ohan.extractors.content/process} 
               :schema {:class lohan.extractors.schema/process} 
               :label {:class lohan.extractors.label/process} 
               :user {:class lohan.extractors.user/process} 
               :env  {:class lohan.extractors.env/process}}") 
        [:content :class]))) 

당신은 제한 할 필요가 중 실행 가능한 환경에서 사용자가 액세스하지 못하도록하는 기능을 실행하지 못하게하기 위해 사용자가 액세스 할 수있는 기호 집합 또는 edn을 제공하는 사용자에 대한 높은 신뢰 수준을가집니다.