Function PEEK-CHAR
peek-char
&optional
peek-type input-stream eof-error-p eof-value recursive-p => char
peek-type - 文字か、t
か、nil
input-stream - 入力ストリーム指定子。デフォルトは標準入力。
eof-error-p - generalized-boolean。デフォルトはtrue。
eof-value - オブジェクト。デフォルトはnil
。
recursive-p - generalized-boolean。デフォルトはfalse。
char - 文字か、eof-value
peek-char
は、input-streamから 実際に読み込むことをせず次の文字を取得し、 あとで読み込まれるように文字を残したままにします。 また、特定の文字が見つかるまで input-streamの文字をスキップし 文字による介入を無視するときにも使用されます。
もしpeek-typeが指定されなかったか、あるいはnil
のとき、 peek-char
は input-streamから文字を取り除くことをせずに 次に読み込まれる文字を返却します。 次回の入力は実行されたinput-streamのものであり、 その文字はまだそこに存在します。 もしpeek-typeがt
のとき、 peek-char
は空白文字をスキップし、 しかしコメントはスキップせずに、 次の文字のpeek-char
処理を行います。 最後に調査された文字は、 その文字が開始のオブジェクトになるので、 input-streamから削除されません。 もしpeek-charが文字のとき、 peek-char
は入力された文字に対して、 char=
と同じものが見つかるまでスキップし、 その文字はinput-streamから削除されます。
もしファイルの終わりが発生し、 eof-error-pがfalseであるときは、 eof-valueが返却されます。
もしrecursive-pがtrueのとき、 この呼び出しはより上位レベルのread
によるものか、 Lispのリーダーによって使われる似たような関数から 埋め込まれたものであると見なされます。
input-streamがecho
ストリームであるとき、 文字はのぞき見だけが行われ、エコーはされません。 このような場合、peek-typeがnil
ではないとき、 peek-char
によってのぞき見された文字は、 read-char
によるものと同じように扱われるので、 unread-char
で別段指定されない限りエコーされます。
with-input-from-string (input-stream " 1 2 3 4 5")
(format t "~S ~S ~S"
(peek-char t input-stream)
(peek-char #\4 input-stream)
(peek-char nil input-stream)))
(#\1 #\4 #\4
>> => NIL
*readtable*
, *standard-input*
, *terminal-io*
eof-error-pがtrueでありファイルの終わりに到達したときは、 型end-of-file
のエラーが通知されます。
peek-typeが文字であり、ファイルの終わりに到達し、 eof-error-pがtrueのときは、 型end-of-file
のエラーが通知されます。
recursive-pがtrueであり、ファイルの終わりに到達したときは、 型end-of-file
のエラーが通知されます。
なし。
なし。