Function UNREAD-CHAR

UP


Function UNREAD-CHAR

Function UNREAD-CHAR

構文

unread-char character &optional input-stream => nil

引数と戻り値

character - 文字。 input-streamから読み込んだ最後の文字でなければなりません。
input-stream - 入力ストリーム指定子。デフォルトは標準入力。

定義

unread-charは、characterinput-streamの前に戻し、 ふたたびinput-streamの次の文字になるようにします。

input-streamechoストリームのとき、 input-stream上ですでに実施された文字のエコーの取り消しは行いません。 しかしunread-charによるinput-stream上で置き換えられた文字は、 あとでread-charによって再びエコーされ内容にするために 印がつけられます。

同じストリームに対してunread-charを二度続けて、 read-char(または暗黙的に文字の読み込みを行う他の入力操作)を 介入させることなく実行したときはエラーです。

peek-charread-charの呼び出しは、前の文字を渡します。 peek-charによって返却されたものの前のどんな文字について unread-charを実行した結果は指定されていません (peek-charpeek-typenilでは なかったときに渡された場合を含む)。 とくに、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からひとつの文字を先読みできるような 効率的な仕組みの提供を目的としています。


TOP, Github