lua table传值是传的引用

原创 2015年11月17日 17:23:44

local randArray = {}

for _ = 1, itemNum do

        local i = math.random(typeNum)

        randArray[_] = ConfigMap[i]

randArray[_].flagId = _

end

当我这样做的时候,每当随机出来的值有相同的时候,flagId的值就变得混乱了,而我希望flagId代替randArray的索引,应该是1 2 3 4 5 ... ...

混乱的现象是当前值跟前面随机出来的值有相同的时候,发现就算还没有运行randArray[_].flagId=_,但却已经有flagId这个字段了,

如果运行完这行,之前的那个值中的flagId字段会变得跟后面的一样。

后来无意中发现,已经添加过的值,在ConfigMap里面也有flagId字段了!

我的天,搞了我半天,实在是太奇怪了!

原来原因是:

lua 中表的传值,传的是引用!



相关文章推荐

lua传"值"和传"引用"

例子一 x = 1 y = x y = 10 print(x) 输出:1 例子二 function change(x) x = 10 end y = 1 c...

lua中table引用问题

最近做了一个养成系统,今天发现一个bug。 大概是我在我的界面中引用(table) PlayerInfo。 每次打开界面时引用了一下,为了自己用起来放便。m_playerInfo = Player...

Lua编程中遇到的table类型传递引用问题

前言: lua中table类型是一种数据结构用来帮助我们创建不同的数据类型,使用table在编程中是再常见不过的了,但是相应的也会碰到引用问题。问题一: lua中table类型是引用传递,因此不能...

关于lua中如何修改引用的值

在Lua中,有时候我们希望可以像C/C++那样修改引用值,但是对于Lua这个脚本语言来讲它是没有&引用符号,它自己规定是,table作为形参的时候,在函数内部修改table的值都是在对实参进行操作,也...

lua深度克隆的实现(lua基本数据类型传的是值,表类型传的是引用)

local function main() require "src/boot/Bootstrap" BootStrap:boot( ) local value ...

关于lua的module函数 传参类型变成table

main.lua require("Audio") Audio:test1(3) Audio:test2(3) Audio.lua module(..., package.seeall); f...

LUA函数参数传递问题

lua中通过值比较Boolean,String,Number类型的值,而通过引用比较Table,function,userdate类型的值。                a = {}; a.x...
  • jbhand
  • jbhand
  • 2015年04月03日 09:27
  • 3450

lua 和 C 语言进行交互 —— 如何传递table

方法1: 采用 lua_pushstring/lua_pushnumber 传递key、value,然后通过 lua_settable 设置 table 中的kv对,like this: ...
  • cjfeii
  • cjfeii
  • 2014年05月12日 09:55
  • 10537

lua基础(sh向lua传递参数arg)

最近将lua作为一种独立的脚本语言来制作一些小工具。在使用过程中发现了一个一直被忽视的知识点,全局变量arg。 任务:通过sh脚本调用lua。 问题:需要通过命令模式对lua脚本传递参数 解决方...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:lua table传值是传的引用
举报原因:
原因补充:

(最多只允许输入30个字)