% Function UNREAD-CHAR
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からひとつの文字を先読みできるような
効率的な仕組みの提供を目的としています。