이상한 문제입니다. 그래서 lein
은 lein repl
으로 REPL을 실행할 때 특정 네임 스페이스를로드하도록 지시받을 수 있습니다.Lein repl이 Clojure 스크립트를로드 한 후 네임 스페이스를 재설정합니다.
:repl-options {:init-ns ns1}
그리고, 예상대로, 그 파일을로드 : 좋아요,의 내 project.clj
파일이 라인을 포함, 그래서 내가 ns1.clj
라는 파일이 있다고 가정하자. 그러나, 나는 ns1.clj
그것이 직업 수행 한 후 다른 네임 스페이스 (ns2
)로 전환하려면, 그래서 추가 다음 ns1.clj
에 :
(ns ns2)
문제는 Leiningen가 ns1.clj
이 후 ns1
에 REPL 네임 스페이스를 재설정한다는 것입니다 끝마친. ns1.clj
을로드하고 네임 스페이스를로드하지 않고 REPL을 시작할 수있는 방법이 있습니까? 그건 그렇고, 나는 Leiningen이 스크립트를 실행하고 명시 적으로 네임 스페이스를 설정하지 않아야한다고 가정합니다.
배경 : clj 스크립트를로드 한 다음 해당 스크립트로 외부 소스에서로드 된 네임 스페이스로 전환하고 싶습니다. 따라서 ns1.clj
의 논리는 REPL이 시작해야하는 네임 스페이스를 파악합니다.
아마도 당신이 잘못된 방향에서 문제를 접근하고 있다고 생각합니다. 당신이하려고하는 것은 매우 특별한 워크 플로우입니다. * .clj 파일을 스크립트로 생각하지 마십시오. Java의 패키지와 더 비슷합니다. 일반적으로 다른 네임 스페이스에 대한 require 문을 사용하여 core.clj라는 초기 네임 스페이스를 얻은 다음 기본 cli 파일에서 직접 네임 스페이스를 호출하고로드하는 대신 core.clj에서 다른 네임 스페이스의 함수를 호출합니다. –
나는 이것이 이상한 일임을 알고 있지만, 내가 이것을하고 싶은 이유가있다 - 나는 몇 가지 추가 기능으로 REPL을 확장하려고 노력 중이다. 예를 들어, REPL에서 네임 스페이스 전환을 계측/포장하고 싶습니다 (일부 기능을 현재 네임 스페이스 등으로 가져 오기를 원합니다). 반드시 좋은 생각은 아니지만, 이제는 무엇을 할 수 있는지에 대한 실험과 같습니다. REPL로 처리하십시오. –