2017-05-12 9 views
2

라켓 경로 라이브러리는 파일과 디렉토리를 약간 다르게 처리합니다. Unix 기반의 Racket 배포판에서는 디렉토리의 끝에 /이라는 꼬리가 있습니다. in-directorypath-only과 같은 여러 기능은이 정보를 사용하여 파일 및 디렉토리로 이어지는 경로를 다르게 처리합니다.경로가 라켓의 디렉토리 경로인지 확인

경로를 만드는 데 권장되는 방법 인 build-path에는 디렉터리 경로를 만드는 데 유용한 메커니즘이 없습니다. 내가 문자열로 경로를 확인하고 string->path을 사용할 수 있습니다 알고 있지만, 직접 build-path을 사용하는 것보다 더 취성 될 것입니다 :

> (string->path "a/b/") 
#<path:a/b/> 

내가 build-path 결합되어 할 수있는 또 다른 것은 및 path-only를 추가 '쓰레기를 추가 '요소를 제거한 경로로 이동합니다. 그러나 나는 그때 그 '쓰레기'문자열을 만들어야 할 때 clunky입니다.

> (path-only (build-path "a" "b" "trash")) 
#<path:a/b/> 

난 그냥 넣어 '수'는 심지어 수 없습니다 자사의 디렉토리 경로가 있지만, 다음의 경로 자체가 끝에 .을 가지고 있음을 보장 build-path 기능에 . (또는 'same) path-only 제거 :

> (build-path "a" "b" 'same) 
#<path:a/b/.> 

다음의 세 가지 디렉토리 경로로 경로를 설정할 수 있지만, 디렉토리 경로로 기존의 라켓 경로를 설정하는 어떤 청소기 방법은 무엇입니까?

답변

1

build-path을 사용하면 올바른 길을 가고 있습니다. 당신이 찾고있는 기능은 path->directory-path입니다. 경로 객체를 가져 와서 디렉토리 경로로 바꿉니다 (유닉스에서는 앞에서 언급 한 /을 추가하는 것을 의미합니다)

> (build-path "a" "b") 
#<path:a/b> 
> (path->directory-path (build-path "a" "b")) 
#<path:a/b/>