控制结构

扩展函数语言提供了控制程序执行的常用语句。

  • 如果然后,否则
  • 虽然做并重复,直到
  • 数字对于
  • 打破
  • 转到

如果然后,否则

如果语句根据一个或多个条件选择要执行的语句块。有三种形式:

如果然后形成

If表达式不为false或nil end 

如果然后,形式

else语句执行If表达式为false或nil end 

如果然后别的表格

elseif expression2 then statements to execute If expression2 is not false or nil . .Else语句在所有表达式为false或nil时执行。——NeedCopy >

示例:

如果headers[name] then local next_value_index = #(headers[name]) + 1 headers[name][next_value_index] = value else headers[name] = {name ..”:“. .结束值}< !——NeedCopy >

注意

  • 表达式不像C和Java中的情况那样括在括号中。
  • 没有等效于C / Java开关语句。您必须使用一系列,如果赛义夫语句来执行等价操作。

虽然做并重复,直到

语句和重复语句提供由表达式控制的循环。

While expression do statements to execute While expression is not false or nil end重复语句执行,直到expression is not false or nil until expression 

示例,而:

当地一个={1,2,3,4}当地的总和,i = 0, 1——多个赋值初始化和我当我< = #——检查是否在数组的末尾和=和+[我]——添加与索引数组元素我总和我= + 1,移动到下一个元素结束< !——NeedCopy >

重复示例:

总和,我= 0,1——多个赋值初始化和我重复和=和+[我]——添加与索引数组元素我总和我= + 1,移动到下一个元素,直到我> #——检查是否过去数组的末尾< !——NeedCopy >

当然,可以编写一个不终止的循环,例如,如果在这些示例中忽略了我= + 1语句。执行此类功能时,Citrix ADC将检测到该功能未在合理的时间内完成,并且会在运行时出现错误时终止该功能:

Cpu限制。在[[string "function extension function…"]中终止扩展执行]:线行编号。

将在/var/log / ns.log中报告。

数字对于

有两种类型的,循环。第一个是的数字,它类似于C和Java中对语的句的通常使用。如果语数字的句初始化一个变量,测试该变量是否已传递最终值,如果没有执行一组语句,则增加该变量,然后重复。数的值循环的语法是:

对于循环体中的variable = initial, final, increment do语句end 

其中初始,最终和增量都是产生(或可以转换为)数字的表达式。变量被认为是为循环语句块的本地;它不能在循环之外使用。增量可以省略;默认值为 1。这些表达式在循环开始时被评估一次。如果增量为正数,终止条件为变量>最后;如果增量为负数,则终止条件为变量<决赛。如果增量为 0,循环将立即终止。

示例(相当于上一节中的同时和重复循环):

Sum = 0 for I = 1, #a do - increment默认为1 Sum + a[I] end 

对循环的第二种类型是通用的,它可以用于更灵活的循环类型。它涉及函数的使用,所以将在函数引入后讨论。

打破

打破语句在一段时间内使用,重复或为循环。它将终止循环并在循环后的第一个语句中恢复执行。示例(也等同于前面的同时,重复和的循环):

Sum, I = 0,1 while true do if I > #a then break end Sum = Sum + a[I] I = I + 1 end 

转到

转到语句可用于向前或向后跳转到标签。标签是一个标识符,其语法是::标签::。转到语句是goto标签。示例(再次等同于前面的循环):

Sum, I = 0,1::start_loop:: if I > #a then goto end_loop——forward jump end Sum = Sum + a[I] I = I + 1 goto start_loop——backwards jump::end_loop::…<!——NeedCopy >

在编程中使用goto一直存在着长期的争议。一般来说,您应该尝试使用其他控制结构来使您的函数更具可读性和可靠性。但偶尔明智地使用goto可能会导致更好的程序。特别是,转到可能在处理错误时有用。

控制结构