制御構造
拡張関数言語は,プログラムの実行を制御するための通常のステ,トメントを提供します。
- If Then Else
- 而做和重复直到
- 数值为
- 打破
- 转到
If Then Else
如果ステトメントは,1以上の条件に基づいて実行するステトメントのブロックを選択します。次の3の形式があります。
If然后Form
If表达式则执行If表达式不为false或nil的语句结束
If then else
如果表达式为false,则执行语句;如果表达式为false,则执行语句;如果表达式为nil,则执行语句。——NeedCopy >
If then elseif else形式
如果expression1,则如果expression1不为假,则执行语句;如果expression2,则执行语句;如果expression2不为假,则执行语句;如果所有表达式都为false或nil,则执行Else语句end
例:
如果headers[name],则本地next_value_index = #(headers[name]) + 1 headers[name][next_value_index] = value else headers[name] = {name ..”:“. .Value} end
注:
- 式は,CおよびJavaの場合と同様に,括弧で囲まれていません。
- C/Javaスiphonesッチ文に相当するものはありません。等価を行うには,一連のif elseifステ,トメントを使用する必要があります。
而做和重复直到
而文と重复文は,式によって制御ル,プを提供します。
当表达式不为false或nil时,执行While表达式do语句,当表达式不为false或nil结束时,重复执行语句,直到表达式不为false或nil,直到表达式
の例:
Local a = {1,2,3,4} Local sum, I = 0,1——当I <= #a do——检查数组末尾sum = sum + a[I]——添加索引为I的数组元素到sum I = I + 1——移动到下一个元素末尾
重复の例:
Sum, I = 0,1——多重赋值初始化Sum,我重复Sum = Sum + a[I]——添加索引为I的数组元素到Sum I = I + 1——移动到下一个元素,直到I > #a——检查是否超过数组的末尾
もろん,終了しないルプを書くことは可能です。たとえば,これらの例のいずれかでI = I + 1ステ,トメントを省略した場合などです。このような関数が実行されると,Citrix ADCは関数が妥当な時間内に完了しなかったことを検出し,実行時エラーで強制終了します。
Cpu限制已达到。终止[[字符串"函数扩展函数…"中的扩展执行[]: line line-number。
は,/var/log/ns.logに報告されます。
数值为
ル,プには2種類あります。最初は,のための数値です。これは,CおよびJavaでの为ステ,トメントの通常の使用に似ています。为文数値のは,変数が最終的な値を渡したかどうかをテストし,そうでない場合は,文のブロックを実行し,変数をインクリメントし,繰り返し,変数を初期化します。ル,プの数値の構文は次のとおりです。
对于循环体中的variable = initial, final, increment do语句end
ここで、初始,最终,および增量は,数値を生成する(または変換できる)すべての式です。変数は,ループステートメントブロックに対してローカルであるとみなされ,ループの外側では使用できません。增量は省略できます。デフォルトは1です。式は、ループの先頭で 1 回評価されます。終了条件は、増分が正の場合は変数 > finalで、増分が負の場合は変数 < finalです。増分が 0 の場合、ループは直ちに終了します。
例(前のセクションの,ルプと繰り返しのルプと同等):
Sum = 0 for I = 1, #a do——increment默认为1 Sum = Sum + a[I] end
对于ル,プの2番目のタ,のための汎用です。これは,関数の使用を伴うので,関数が導入された後に後で説明します。
打破
打破文は,しばらくの間,繰り返し,またはル,プ内で使用されています。これは,ル,プを終了し,ル,プの後の最初の文で実行を再開します。例(前述の,重复,および为ル,プと同等):
if if I > #a then break end Sum = Sum + a[I] I = I + 1 end
转到
去文は,ラベルに前方または後方にジャンプするために使用することができます。ラベルは識別子であり,その構文は::标签:です.goto文はgotoラベルです。例(前述のループと同等):
Sum, I = 0,1::start_loop:: if I > #a then goto end_loop——向前跳转结束Sum = Sum + a[I] I = I + 1 goto start_loop——向后跳转::end_loop::…<!——NeedCopy >
プログラミングでgotosを使用することにいては,長い間論争がありました。一般に,関数をより読みやすく信頼できるものにするために,他の制御構造を使用してください。しかし,時折gotosの賢明な使用は,より良いプログラムにながる可能性があります。特に,gotosはエラ,の処理に役立,ます。