Home News DOC Class DL Others Cooker
Documents  >  Tutorial  >  fromto 文
fromto 文

インデックスによってループを制御するための fromto 文について説明します。


目次:


書式

fromto

開始値と終了値

ループの手順

スコープ

予約変数

endfromto

書式

fromto 文は以下の形式です。


fromto ( 開始値 , 終了値 )

...

endfromto


fromto 文は開始値と終了値によって決定されたインデックスが条件を満たしている間ループを繰り返します。インデックスが条件を満たさなくなったら実行制御が endfromto の次の文に移動します。

実行制御が continue 文か endfromto に達した場合、ループインデックスを更新した後に実行制御が fromto 文の最初の文に移動します。

実行制御が break に達した場合、実行制御が endfromto の次の文に移動します。

fromto

fromto 文である事を示すキーワードです。

開始値と終了値

開始値と終了値は fromto 文のインデックスを決定するための式です。括弧で囲まれカンマで区切る必要があります。

開始値と終了値は int クラスを返す式でなければなりません。両者は、fromto の最初ループの前に一度だけ評価されループの最中に、その値が変わることはありません。


開始値と終了値が等しい場合はループが実行されません。

開始値と終了値が proxy クラスを返す場合は proxy クラスの実体が自動的に使用されます。proxy クラスの Entity ゲッターを呼び出したのと同じ結果になります。


proxy pro = new proxy(0);

fromto(pro, 10) // pro.Entity is used.

...

eft


proxy クラスの実体は int クラスでなければなりません。

ループの手順

♦1:fromto 文の最初に開始値と終了値が評価されループインデックスが開始値に初期化されます。これは最初に一度だけ行われます。


♦2:条件の判定が行われます。ループインデックスと終了値が等しければ endfromto の次の文に実行制御を移動します。


♦3:fromto 文の文が実行されます。


♦4:continue 文か endfromto に達したらループインデックスを以下の様に増減します。


開始値 < 終了値の場合、ループインデックスを 1 加算します。

開始値 > 終了値の場合、ループインデックスを 1 減算します。


♦5:♦2に戻ります。

スコープ

fromto 文はスコープを生成します。


スコープ内で宣言された変数はループ毎に再び宣言されて新しいインスタンスが割り当てられます。

前のループの値を次のループに持ち越すことはありません。

予約変数

実行制御が fromto キーワードに到達するとスコープが生成され、予約変数 __count が定義され、__index が宣言されます。

__count は int クラスの変数です。ゼロから始まるループ回数で初期化されます。

__index は int クラスの変数です。開始値と終了値の評価後に現在のループインデックス値で初期化されます。

__countは通常の int クラスのようにオーバーフローが発生することはありません。__count が int クラスの最大値を超えた場合はゼロに戻ります。


fromto 文の開始値と終了値の評価の際には既にスコープが生成されています。したがって、開始値と終了値の中に予約変数を使用した場合、その予約変数は現在の fromto 文が定義したものです。

__index は開始値と終了値に使用しないでください。例外が発生します。

fromto 文の文はオプションです。fromto 文内に任意の数だけ存在できます。

endfromto

fromto 文の終了を示すキーワードです。

endfromto の代わりに省略形の eft を使用できます。eft もキーワードであることに注意してください。

1:

class example

2:

open method void someMethod()

3:

message m; // dialog box.

4:

fromto (100, 105)

5:

m.Show(__count); // 0, 1, 2, 3, 4

6:

m.Show(__index); // 100, 101, 102, 103, 104

7:

endfromto

8:

em

9:

ec

Copyright © Rice All rights reserved.