% Function PEEK-CHAR
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
のエラーが通知されます。
なし。
なし。