WITH-OPEN-STREAM — 스트림을 자동으로 닫으며 쓰는 매크로
WITH-OPEN-STREAM — 스트림을 자동으로 닫으며 쓰는 매크로
이미 만들어진 스트림으로 일련의 연산을 수행하고, 끝나면 자동으로 닫아주는 매크로예요. 스트림을 직접 close로 닫는 것을 잊어도 되는 편리함을 줘요.
시그니처
with-open-stream (var stream) declaration* form* => results*
본문
인자와 값 (Arguments and Values)
var— 변수 이름(variable name).stream— 폼; 평가되어 스트림을 만들어요.declaration—declare식; 평가되지 않아요.forms— 암묵적 progn.results—forms가 돌려준 값.
설명 (Description)
with-open-stream은 stream에서 일련의 연산을 수행하고, 값을 돌려준 뒤 스트림을 닫아요.
var를 stream의 값에 바인딩하고, forms를 암묵적 progn으로 실행해요. stream은 정상적으로 나가든 비정상적으로 나가든 with-open-stream에서 나갈 때 자동으로 닫혀요. 스트림은 동적 지속 기간(dynamic extent)을 가지며, 그 기간은 폼에서 나가면 끝나요.
forms 안에서 var 변수를 할당(assign)하려고 하면 결과는 정의되지 않아요(undefined).
예제 (Examples)
(with-open-stream (s (make-string-input-stream "1 2 3 4"))
(+ (read s) (read s) (read s))) => 6
부수 효과 (Side Effects)
스트림이 (나갈 때) 닫혀요.
특이 상황 (Exceptional Situations)
없음.
참고 (Notes)
없음.
더 알아보기
close— 스트림을 닫는 함수