OCAML의 Stdin으로 캐릭터를 반환합니다
-
06-07-2019 - |
문제
C ++ 메소드와 동일합니까? istream::putback(char)
OCAML?
시작에 캐릭터를 추가 할 수있는 방법 Stdin?
해결책
당신은 그것을 할 수 없습니다 in_channel
또는 함께 Stream.t
. 몇 가지 제안이 있습니다 :
읽은 캐릭터를 되 찾는 경우 사용을 사용하고 싶을 수도 있습니다.
peek
요소를 제거하는 대신 스트림을 검사합니다.해당 기능에 C- 인터페이스를 직접 작성하는 운이있을 수 있습니다. 나는 이것이 정말로 나쁜 생각 인 것을 볼 수있다.
대신 축합기 사용을 고려해 보셨습니까?
지퍼 또는 스택 인 유형 또는 문자를 다시 밀어 넣을 수있는 다른 구조로 현재 함수 주위에 모듈을 작성하십시오.
다른 팁
OCAML 배터리가 포함되어 있습니다 스트림을위한 훨씬 더 포괄적이고 훨씬 높은 수준의 인터페이스를 특징으로합니다. 당신은 이것을 볼 수 있습니다. 또한 일반적으로 좋습니다.
기본적으로 : 당신은 할 수 없습니다. 배터리 (및 Extlib)는 향상된 I/O 래퍼를 제공하지만이 기능은이 기능을 지원하지 않습니다.
그러나 문자 수준 판독 만 수행하려면 BU가 I/O 스트림을 열거적 (바테 넘 배터리 포함). ENUM은 "다음 값을 얻는"인터페이스 유형으로 일반 열거를 제공하며, 열거의 전면으로 값을 다시 푸시 할 수 있습니다. 그래서 당신은 열렬한 유형으로 stdin을 감을 수 있습니다. char Enum.t
캐릭터를 반환합니다 Enum.next
기능을하고 사용합니다 Enum.push
원치 않는 캐릭터를 다시 앞쪽으로 밀어 넣습니다.
그런 다음 그러한 열거를 다시 찍을 수 있습니다. io (바티오)보다 유연한 인터페이스의 경우, 해당 모듈이 내부 버퍼링을 수행하지 않는 것을 먼저 확인하면 문자 푸시의 의미를 엉망으로 만들 수 있습니다.