% 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
を返却します。