2014-04-07 3 views
0

목록을 가져온 다음 사용자에게 파일 이름을 묻는 기능이 있습니다. 이 목록은 파일 이름으로시스템의 기본 경로에 구성표 목록을 작성하십시오.

뭔가 같은 (의사 코드)를 저장, 기본 경로에 기록하는 것입니다

(define storeme 
    (lambda (lst) 
    (write-list lst filename default-path))) 

이 작동하도록하는 방법을 잘. "write"는 쓰기 객체 & [output-port]에 대해 2 개의 인수 만 취합니다. 감사

+1

'open-file-output-port' (또는 친구들)을 찾으십시오. – leppie

답변

0

당신은 당신은 어딘가에서 전체 경로 이름이 필요합니다 당신이 그것을 가지고 가정

(define storeme 
(lambda (lst) 
    (let* ((filename (prompt-for-filename)) ;;the prompt routine should retrun #f 
      (output       ;for invalid filenames or user cancellations 
      (open-file-output-port ;;routine may vary be implementation and scheme revision 
       (string-append *default-path* filename)))) 
    (begin (if filename 
       (begin (write lst output) (display-each "List Stored in " filename)) 
       (display "List not stored")) 
      (close-output-port output))))) 
1

같은 변수

뭔가에 출력 포트를 바인딩해야합니다.

(define store-me-at 
    (lambda (lst path) 
    (with-output-to-file path (lambda() (write lst))))) 

것은 당신이 그렇게 writeport 인수가 필요하지 않습니다에 대한 current-output-port이 설정되어 with-output-to-file을 사용하는 경우 : 귀하의 함수를 정의합니다.

with-output-to-file 그것을 이렇게하면 로컬이 아닌 종료 (또는 call/cc 및 관련 사용을 포함하는 다른 미묘가)이 경우에도 port 항상 닫혀 얻을 것이다 path을 열 것을 보장한다. open-output-file을 사용하고 close-ouput-port을 사용하면 그러한 보증을받지 못합니다.

관련 문제