Appearance
Copy 
Lua中的赋值操作(=)是引用赋值,即当你将一个table类型对象赋值给另一个变量时,这两个变量实际上引用的是内存中的同一个对象。这意味着,通过任何一个变量所做的修改都会反映到所有引用该对象的变量上。
Copy控件能创建一个对象的完全独立的副本。
业务属性 
| 属性 | 含义 | 说明 | 输入限定 | 示例值 | 
|---|---|---|---|---|
| enable | 是否启用该控件,未启用时不编译 | 是否编译 | 选择值 | 启用 | 
| name | 控件返回值命名 | 控件输出值变量名 | 常量 | cloneVar | 
| text | 与控件关联的文本 | 设计页控件显示 | 常量 | Copy | 
| param | 克隆变量 | 流程变量 | #{a} | 
使用示例 
增加Copy控件,param输入:#{body.var}

增加LuaScript控件,使用=操作符赋值一个变量assignmentVar,script属性为:
lua
local assignmentVar=body.varlocal assignmentVar=body.var
最后,使用输出控件,分别对克隆变量、赋值变量和原变量输出变量值和对象虚拟引用地址
使用 tostring(..) 函数输出对象的虚拟引用地址:
输出控件data属性为:
json
{
  "inputVar": {
    "dataValue": "#{body.var}",
    "referAddress": "#{tostring(body.var)}"
  },
  "cloneVar": {
    "dataValue": "#{cloneVar}",
    "referAddress": "#{tostring(cloneVar)}"
  },
  "assignmentVar": {
    "dataValue": "#{assignmentVar}",
    "referAddress": "#{tostring(assignmentVar)}"
  }
}{
  "inputVar": {
    "dataValue": "#{body.var}",
    "referAddress": "#{tostring(body.var)}"
  },
  "cloneVar": {
    "dataValue": "#{cloneVar}",
    "referAddress": "#{tostring(cloneVar)}"
  },
  "assignmentVar": {
    "dataValue": "#{assignmentVar}",
    "referAddress": "#{tostring(assignmentVar)}"
  }
}
使用curl请求接口:
$ curl http://localhost:6636/api/copy -d "{\"var\":{\"attr\":\"a\"}}"$ curl http://localhost:6636/api/copy -d "{\"var\":{\"attr\":\"a\"}}"接口返回:
json
{
    "inputVar": {
        "dataValue": {
            "attr": "a"
        },
        "referAddress": "table: 0x02ce5098"
    },
    "cloneVar": {
        "dataValue": {
            "attr": "a"
        },
        "referAddress": "table: 0x02ce9490"
    },
    "assignmentVar": {
        "dataValue": {
            "attr": "a"
        },
        "referAddress": "table: 0x02ce5098"
    }
}{
    "inputVar": {
        "dataValue": {
            "attr": "a"
        },
        "referAddress": "table: 0x02ce5098"
    },
    "cloneVar": {
        "dataValue": {
            "attr": "a"
        },
        "referAddress": "table: 0x02ce9490"
    },
    "assignmentVar": {
        "dataValue": {
            "attr": "a"
        },
        "referAddress": "table: 0x02ce5098"
    }
}可以看到,三个输出对象的数据内容都是一致的,赋值变量与原变量的虚拟引用地址相同,克隆变量与原变量的虚拟引用地址不同。