lua深度克隆的实现(lua基本数据类型传的是值,表类型传的是引用)
来源:互联网 发布:淘宝手机端首页怎么做 编辑:程序博客网 时间:2024/05/17 11:04
local function main() require "src/boot/Bootstrap" BootStrap:boot( ) local value = "old" cclog("OLD:"..value) f(value) cclog("NEW:"..value)endfunction f(value) value = "new"end
输出:
[LUA-print] OLD:old
[LUA-print] NEW:old
总结:基本类型lua是传值
<2>
local function main() require "src/boot/Bootstrap" BootStrap:boot( ) --test测试 t1 = {a = "abc", b = "def"} dump(t1) f(t1) dump(t1)endfunction f(t) t["a"] = nilend--[[[LUA-print] dump from: [string "src/main.lua"]:132: in function <[string "src/main.lua"]:127>[LUA-print] - "<var>" = {[LUA-print] - "a" = "abc"[LUA-print] - "b" = "def"[LUA-print] - }[LUA-print] dump from: [string "src/main.lua"]:134: in function <[string "src/main.lua"]:127>[LUA-print] - "<var>" = {[LUA-print] - "b" = "def"[LUA-print] - }]]可见,通过f函数修改了表t1
总结:可见lua传表为传的引用,修改一个,会影响另一个表。
<3>深度克隆的实现
function clone(object) local lookup_table = {} local function _copy(object) if type(object) ~= "table" then return object elseif lookup_table[object] then return lookup_table[object] end local new_table = {} lookup_table[object] = new_table for key, value in pairs(object) do new_table[_copy(key)] = _copy(value) end return setmetatable(new_table, getmetatable(object)) end return _copy(object)end
当然了,lua中直接用local objCopy = clone(obj),这样就克隆出来个一样的对象了。
总结:不过lua自带clone方法,直接使用就行。
0 0
- lua深度克隆的实现(lua基本数据类型传的是值,表类型传的是引用)
- lua面向对象是怎么实现的
- lua面向对象是怎么实现的
- 如何简单地实现引用类型的深度克隆
- lua基本类型的演示
- Lua自己实现深度克隆一个值
- [java]引用类型传的是地址
- java 引用数据类型实现 对象的克隆
- lua和php的基本数据类型
- 【Lua】lua的基本语法
- 方法参数是基本类型和引用类型的区别
- lua源码分析4(lua是怎么执行的)
- Lua部分源代码分析(讨论lua的库是如何实现)
- Lua的数据类型
- LuaPlus是Lua的C++增强
- LuaPlus是Lua的C++增强
- LuaPlus是Lua的C++增强
- LuaPlus是Lua的C++增强
- HDU 1402:A * B Problem Plus
- C++第5次实验—多继承
- 手机最顶端的状态栏
- C++第五次上机实验—教师干部类
- vim配置颜色方案
- lua深度克隆的实现(lua基本数据类型传的是值,表类型传的是引用)
- 【深入理解JVM】:Java类继承关系中的初始化顺序
- 设计模式之模板方法模式
- VC 6.0快捷键大全
- Caffe: 运行classify.py时报错 Mean shape incompatible with input shape
- 代理模式(二)
- 【C语言】逆序输出字符串
- br-lan: received packet on eth2.1 with own address as source address
- Dalvik和ART