% Function READ-SEQUENCE
Function READ-SEQUENCE
read-sequence
sequence stream &key
start end => position
sequence - シーケンス
stream - 入力ストリーム
start, end - stringの境界インデックス指定子。
デフォルトはstart, endそれぞれ0
とnil
。
position - 0
以上かつsequenceの長さ以下の整数
streamから要素を読み込み、 sequenceのstartからendの境界内の要素を 破壊的に修正して置き換えます。
sequenceは破壊的に修正され、streamから一連の要素がコピーされます。 もし部分シーケンスの全ての要素をコピーする前に streamがファイルの終わりに到達したとき、 sequenceの終端付近の残りの要素は更新されません。
positionは、更新が生じなかったsequenceの 最初の要素のインデックスであり、 ファイルの終わりに到達したときはend未満になることがあります。
(defvar *data* (make-array 15 :initial-element nil))
(values (read-sequence *data* (make-string-input-stream "test string")) *data*)
=> 11, #(#\t #\e #\s #\t #\Space #\s #\t #\r #\i #\n #\g NIL NIL NIL NIL)
streamとsequenceは修正されます。
なし。
sequenceが正常なシーケンスではなかったときは、
型type-error
のエラーを通知する準備をしなければなりません。
startが非負の整数ではなかったときは、
型type-error
のエラーを通知する準備をしなければなりません。
endが非負の整数かnil
ではなかったときは、
型type-error
のエラーを通知する準備をしなければなりません。
streamから読み込まれた要素が、
sequenceの要素の型ではなかったときは、
型type-error
のエラーを通知されるかもしれません。
3.2.1. コンパイラーの用語,
write-sequence
,
read-line
read-sequence
は、指定した部分シーケンスに対して
streamからひとつの要素を読み込みその都度sequenceに
格納していく繰り返しと同じ効果ですが、
おそらくは同等のループよりもより効率的になります。
ある効率の良い実装では、
sequenceがstreamの要素と同じ型のvector
である場合に
より効率的になるかもしれません。