For/ja

From Second Life Wiki
< For
Revision as of 08:34, 26 September 2023 by Misaki Vanilla (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

for( 初期化; 条件式; 増分処理ループ

•  初期化 条件式をチェックする前に一度だけ実行されます。
•  条件式 この文の実行結果が真のときはループが実行されます。
•  増分処理 ループの後に実行され, その後で条件式が再びチェックされます。
•  ループ シングルステートメントか、ブロックステートメントか、空のステートメントのいずれかにできます。


いずれのステートメントも空欄にできます。

詳細

条件の種類
条件
integer 0ではない場合は真。
float 0ではない場合は真。
string 文字列の長さが0ではない場合は真。
key keyが有効でNULL_KEYではない場合のみ真。
vector vectorがZERO_VECTORではない場合は真。
rotation rotationがZERO_ROTATIONではない場合は真。
list listの長さが0ではない場合は真。正しい動作は、Monoでコンパイルされたスクリプトのみで見られ、LSOでコンパイルされたスクリプトは誤って false になります。BUG-230728


以下は、forループが最も一般的に記述される方法で、各部分が適切に指定されています。

このループは0から9までの10回実行されます。各繰り返しで2つの文が実行されます。

integer a = 0;
integer b = 10;
for (a = 0; a < b; ++a)
{
    llOwnerSay( (string)a ); // first statement
    llOwnerSay( (string)b ); // second statement
}

次のものは一般的ではなく、中括弧が省略されている場合です。

これは、ループ中に1つの文のみを実行する必要がある場合に使用できます。

integer a = 0;
integer b = 10;
for (a = 0; a < b; ++a)
    llOwnerSay( (string)a ); // single statement

次のコードは技術的には可能ですが、読みやすさと保守性が低下するため、お勧めしません。

初期化部分は省略されています。なぜなら、変数aはすでにゼロの値を持っているからです。

ループ本体も省略されています。なぜなら、増分ステートメントには必要なすべての操作が含まれているためです。

integer a = 0;
integer b = 10;
for ( ; a < b; llOwnerSay((string)(++a)) )
    ; // empty statement (could be at the end of the previous line)

ノート

forループは下記のwhileループと同じです。

初期化;
while(条件式)
{
    ループ;
    増分処理;
}