Previous: , Up: set & setq   [Contents][Index]


1.9.3 Counting

以下はカウンターの中でどのようにsetqを使用するかを示すための例です。あなたのプログラムの一部が何回繰り返されたかを計数するために、この例を使えるかもしれません。まず変数を0にセット、その後はプログラム自身が繰り返される度に数値に1を加算します。これを行うにはカウンターの役目をもつ変数が1つ、そしてカウンター変数に0をセットする初期化用のsetq式と評価される度にカウンターを増分する2つ目のsetqという2つの式が必要になります。

(setq counter 0)                ; この初期化式を呼び出してみましょう

(setq counter (+ counter 1))    ; これは加算式

counter                         ; これはカウンター

(‘;’の後に続くテキストはコメントです。Change a Function Definitionを参照してください。)

これらのうち1つ目の式、つまり初期化式である(setq counter 0)を評価してから、3つ目の式であるcounterを評価すると、数値の0がエコーエリアに表示されます。その後に2つ目の式、つまり加算式である(setq counter (+ counter 1))を評価すれば、カウンターの値が1になります。つまりcounterをもう一度評価すれば、数値1がエコーエリアに表示されるはずです。2つ目の式を評価する度に、カウンターの値が増分されます。

加算式の(setq counter (+ counter 1))を評価したとき、Lispインタープリターはまずもっとも内側のリストの評価、つまり加算を行います。このリストを評価するためには、インタープリターは変数counterと数値の1を評価しなければなりません。インタープリターが変数counterを評価すると、変数のカレント(current: 現在、その時点)の値を受け取ります。インタープリターはその値と数値の1を+に渡して、これらの2つが足し合わされます。内側のリストの値として加算された合計がリターンされてsetqに渡されて、この新しい値がcounterにセットされるのです。その結果として変数counterの値が変更されます。

This page has generated for branch:work/add_lispintr, commit:65845cf60c073f2f3182d1d07483530e9bbe1d96 to check Japanese translation.