구조체를 포트로 사용하기
구조체를 포트로 사용하기 (Structures as Ports)
prop:input-port와 prop:output-port 구조체 타입 속성을 이용하면, 구조체 인스턴스를 입력 포트나 출력 포트처럼 취급할 수 있어요. 속성 값으로 실제 포트나 특정 필드를 지정하는 두 가지 방식을 지원해요.
출처: Racket Reference
본문
13.1.8 구조체를 포트로 사용하기
value
prop:input-port : struct-type-property?
value
prop:output-port : struct-type-property?
prop:input-port와 prop:output-port 구조체 타입 속성은, 그 인스턴스가 각각 입력 포트와 출력 포트로 쓰일 수 있는 구조체 타입을 식별해 줘요.
각 속성의 값은 다음 중 하나가 될 수 있어요.
- 입력 포트(
prop:input-port의 경우) 또는 출력 포트(prop:output-port의 경우): 이 경우 구조체를 포트로 사용하는 것은 주어진 입력 또는 출력 포트를 사용하는 것과 동일해요. 0(포함)과 구조체 타입의 자동이 아닌(non-automatic) 필드 수(제외, 슈퍼타입 필드는 세지 않음) 사이의 정확한(exact) 음이 아닌 정수: 이 정수는 구조체의 필드 하나를 가리키며, 그 필드는 불변(immutable)으로 지정되어 있어야 해요. 필드가 입력 포트(prop:input-port의 경우)나 출력 포트(prop:output-port의 경우)를 담고 있으면 그 포트를 사용해요. 그렇지 않으면prop:input-port에는 빈 문자열 입력 포트를,prop:output-port에는 모든 데이터를 버리는 포트를 사용해요.
file-position 같은 일부 프로시저는 입력 포트와 출력 포트 모두에서 동작해요. prop:input-port와 prop:output-port 속성을 모두 가진 구조체 타입의 인스턴스가 주어지면, 그 인스턴스는 입력 포트로 사용돼요.