Function READ-CHAR-NO-HANG
read-char-no-hang
&optional
input-stream eof-error-p eof-value recursive-p => char
input-stream - 入力ストリーム指定子。デフォルトは標準入力。
eof-error-p - generalized-boolean。デフォルトはtrue。
eof-value - オブジェクト。デフォルトはnil
。
recursive-p - generalized-boolean。デフォルトはfalse。
char - 文字か、eof-value
read-char-no-hang
は、 input-streamに利用可能な文字があるとき、 その文字を返却します。 もし文字が利用可能ではないとき、 read-char-no-hang
はnil
を返却します。
もしrecursive-pがtrueのとき、 この呼び出しはより上位レベルのread
によるものか、 Lispのリーダーによって使われる似たような関数から 埋め込まれたものであると見なされます。
もしファイルの終わりが発生し、 eof-error-pがfalseであるときは、 eof-valueが返却されます。
;; このコードは実装がコンソールからの入力の終端に
;; 改行を必要としないことを仮定しています。
defun test-it ()
(unread-char (read-char))
(list (read-char-no-hang)
(read-char-no-hang)
(read-char-no-hang)))
(=> TEST-IT
;; 実装Aは、コンソールのインタラクティブな入力の終端に
;; 改行を必要としません。
(test-it)
>> a=> (#\a NIL NIL)
;; 実装Bは、コンソールのインタラクティブな入力の終端に
;; 改行を必要とし、その開業は入力ストリームに残します。
(test-it)
>> a<NEWLINE>=> (#\a #\Newline NIL)
*standard-input*
, *terminal-io*
eof-error-pがtrueでありファイルの終わりに到達したときは、 型end-of-file
のエラーが通知されます。
read-char-no-hang
は正確にread-char
と似ていますが、 もし文字を(例えばキーボードから)取得するために 待機する必要があるような場合は違っており、 このような場合は待つことなしに即座にnil
を返却します。