Appearance
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
数组中:

使用输出控件输出index
,value
:
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
数组中:

使用输出控件输出key
,value
:
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
是由属性值构成的。