Function UNREAD-CHAR
unread-char
character &optional
input-stream => nil
character - 文字。 input-streamから読み込んだ最後の文字でなければなりません。
input-stream - 入力ストリーム指定子。デフォルトは標準入力。
unread-char
は、characterをinput-streamの前に戻し、 ふたたびinput-streamの次の文字になるようにします。
input-streamがecho
ストリームのとき、 input-stream上ですでに実施された文字のエコーの取り消しは行いません。 しかしunread-char
によるinput-stream上で置き換えられた文字は、 あとでread-char
によって再びエコーされ内容にするために 印がつけられます。
同じストリームに対してunread-char
を二度続けて、 read-char
(または暗黙的に文字の読み込みを行う他の入力操作)を 介入させることなく実行したときはエラーです。
peek-char
かread-char
の呼び出しは、前の文字を渡します。 peek-char
によって返却されたものの前のどんな文字について unread-char
を実行した結果は指定されていません (peek-char
のpeek-typeがnil
では なかったときに渡された場合を含む)。 とくに、peek-char
のあとのunread-char
の 呼び出しの結果は指定されていません。
with-input-from-string (is "0123")
(dotimes (i 6)
(let ((c (read-char is)))
(if (evenp i) (format t "~&~S ~S~%" i c) (unread-char c is)))))
(0 #\0
>> 2 #\1
>> 4 #\2
>> => NIL
*standard-input*
, *terminal-io*
なし。
peek-char
, read-char
, 21.1. ストリームの説明
unread-char
は、 Lispリーダーやその他の構文解析を実行するときに input-streamからひとつの文字を先読みできるような 効率的な仕組みの提供を目的としています。