Skip to content

foreach

for控件有两种:数字 for(numeric for)和泛型 for(generic for),本章介绍泛型for.

泛型 for 循环通过一个迭代函数(iterator)来遍历迭代参数内的所有值。

业务属性

属性含义输入限定示例值
enable是否启用该控件,未启用时不编译选择值启用
text与控件关联的文本常量foreach
params循环变量索引变量名常量
值变量名常量
索引变量名k
值变量名v
variable被迭代的变量流程变量#
iterator迭代函数选择值ipairs

目前支持的迭代函数:

  • ipairs:迭代数组,返回2个循环变量,p1 为数组下标,p2 为数组下标所对应的元素值。
  • pairs:迭代实体对象,返回2个循环变量,p1 为属性字段名,p2 为属性值。

循环变量的命名在params中定义,上述中的p1,p2仅作示例。

使用示例

ipairs

使用LuaScript控件定义两个数组,用于存放每一轮循环所产生的迭代变量:

lua
local index = {}
local value = {}
local index = {}
local value = {}

将迭代函数的返回值定义为k,v,迭代http请求body参数中的array变量,迭代函数选择ipairs

在循环体内使用TableInsert控件将第一个循环变量k插入到刚刚定义的index数组中:

将第二个循环变量v插入到刚刚定义的value数组中:

使用输出控件输出indexvalue

json
{
  "p1":"#{index}",
  "p2":"#{value}"
}
{
  "p1":"#{index}",
  "p2":"#{value}"
}

使用curl请求接口:

$ curl http://localhost:6636/api/foreach -d "{ \"array\": [10,20,30,40,50,60] }"
$ curl http://localhost:6636/api/foreach -d "{ \"array\": [10,20,30,40,50,60] }"

接口返回:

json
{
  "resCode": "0",
  "resMsg": "success",
  "data": {
    "p1": [1,2,3,4,5,6],
    "p2": [10,20,30,40,50,60]
  }
}
{
  "resCode": "0",
  "resMsg": "success",
  "data": {
    "p1": [1,2,3,4,5,6],
    "p2": [10,20,30,40,50,60]
  }
}

可以看到在ipairs中,由第一个循环变量组成的index是由数组下标构成的,而由第二个循环变量组成的value是由数组元素构成的。

pairs

使用LuaScript控件定义两个数组,用于存放每一轮循环所产生的迭代变量:

lua
local key = {}
local value = {}
local key = {}
local value = {}

将迭代函数的返回值定义为k,v,迭代http请求body参数中的week变量,迭代函数选择pairs

在循环体内使用TableInsert控件将第一个循环变量k插入到刚刚定义的key数组中:

将第二个循环变量v插入到刚刚定义的value数组中:

使用输出控件输出keyvalue

json
{
  "p1":"#{key}",
  "p2":"#{value}"
}
{
  "p1":"#{key}",
  "p2":"#{value}"
}

使用curl请求接口:

$ curl http://localhost:6636/api/foreach -d "{\"week\":{\"Sunday\":7,\"Monday\":1,\"Tuesday\":2,\"Wednesday\":3,\"Thursday\":4,\"Friday\":5,\"Saturday\":6}}"
$ curl http://localhost:6636/api/foreach -d "{\"week\":{\"Sunday\":7,\"Monday\":1,\"Tuesday\":2,\"Wednesday\":3,\"Thursday\":4,\"Friday\":5,\"Saturday\":6}}"

接口返回:

json
{
  "resCode": "0",
  "resMsg": "success",
  "data": {
    "p1": ["Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday"],
    "p2": [7,6,5,4,3,2,1]
  }
}
{
  "resCode": "0",
  "resMsg": "success",
  "data": {
    "p1": ["Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday"],
    "p2": [7,6,5,4,3,2,1]
  }
}

可以看到在pairs中,由第一个循环变量组成的key是由属性名构成的,而由第二个循环变量组成的value是由属性值构成的。