구조체를 포트로 사용하기

구조체를 포트로 사용하기 (Structures as Ports)

prop:input-portprop:output-port 구조체 타입 속성을 이용하면, 구조체 인스턴스를 입력 포트나 출력 포트처럼 취급할 수 있어요. 속성 값으로 실제 포트나 특정 필드를 지정하는 두 가지 방식을 지원해요.

출처: Racket Reference

본문

13.1.8 구조체를 포트로 사용하기

value

prop:input-port : struct-type-property?

value

prop:output-port : struct-type-property?

prop:input-portprop: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-portprop:output-port 속성을 모두 가진 구조체 타입의 인스턴스가 주어지면, 그 인스턴스는 입력 포트로 사용돼요.

더 알아보기