% Function READ-CHAR-NO-HANG
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を返却します。