Macro WITH-INPUT-FROM-STRING

UP


Macro WITH-INPUT-FROM-STRING

Macro WITH-INPUT-FROM-STRING

構文

with-input-from-string (var string &key index start end) declaration* form* => result*

引数と戻り値

var - 変数名
string - フォーム。評価され文字列を生成します。
index - place
start, end - stringの境界インデックス指定子。 デフォルトはstart, endそれぞれ0nil
declaration - 宣言式。評価されません。
form - 暗黙のprogn
result - formの返却値

定義

入力の文字列ストリームを作成し、 ストリーム上の操作を実行する機会を提供し (ゼロか複数の値を返却します)、 そして文字列ストリームをクローズします。

stringは最初に評価され、 結果の文字列をstartendで囲った部分文字列から、 文字を提供する文字型の入力の文字列ストリームをvarに束縛します。

入力の文字列ストリームはwith-input-from-stringから 退出したときに通常時と非通常時に関わらず自動的にクローズされます。 変数varに束縛された入力の文字列ストリームは動的エクステントを持ち、 フォームから退出されたときにエクステントは終了します。

indexstring内で前進したポインターです。 もしwith-input-from-stringが通常の退出をしたとき、 indexにはstringの最初に読まなくなった文字を示すインデックスの値を持っており もし全ての文字が使用されたときは(length string)になります。 indexによって指定されたplaceは 読み込み進行時だけではなく操作の終わりにも更新されます。

startindexはおそらくどちらも同じ変数であり、 これはstring内の前進を行うポインターを示しており、 おそらくは何らかのループに含まれて繰り返されます。

変数varに代入しようとしたときの結果は未定義です。

例文

(with-input-from-string (s "XXX1 2 3 4xxx"
                            :index ind
                            :start 3 :end 10)
   (+ (read s) (read s) (read s))) =>  6
ind =>  9
(with-input-from-string (s "Animal Crackers" :index j :start 6)
  (read s)) =>  CRACKERS

変数j15が設定されます。

副作用

indexによって名前付けられたplaceの値は、 必要なら修正されます。

影響

なし。

例外

なし。

参考

make-string-input-stream, 3.6. 横断の規則と副作用

備考

なし。


TOP, Github