WITH-OPEN-STREAM — 스트림을 자동으로 닫으며 쓰는 매크로

WITH-OPEN-STREAM — 스트림을 자동으로 닫으며 쓰는 매크로

이미 만들어진 스트림으로 일련의 연산을 수행하고, 끝나면 자동으로 닫아주는 매크로예요. 스트림을 직접 close로 닫는 것을 잊어도 되는 편리함을 줘요.

출처: CLHS: Macro WITH-OPEN-STREAM

시그니처

with-open-stream (var stream) declaration* form* => results*

본문

인자와 값 (Arguments and Values)

  • var — 변수 이름(variable name).
  • stream — 폼; 평가되어 스트림을 만들어요.
  • declarationdeclare 식; 평가되지 않아요.
  • forms — 암묵적 progn.
  • resultsforms가 돌려준 값.

설명 (Description)

with-open-streamstream에서 일련의 연산을 수행하고, 값을 돌려준 뒤 스트림을 닫아요.

varstream의 값에 바인딩하고, 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 — 스트림을 닫는 함수