我在表和带有函数的简单变量分配之间有不同的行为。例如,在分配数字时不存在这种差异。
-- works fine
arrNum={1234}
Num=arrNum[1] -- Num=1234
arrNum[2]=arrNum[1] -- arrNum={1234,1234}
--does not work fine
arrFunc={function(x) return 10*x end}
func=arrFunc[1] -- func=function(x) return 10*x end
arrFunc[2]=arrFunc[1] -- arrFunc={function(x) return 10*x end,nil}
func is function(x) return 10*x end 但是:我得到 arrFunc={function(x) return 10*x end, nil } 而不是 arrFunc={function(x) return 10*x end, function(x) return 10*x 结束}
当对我来说 func 和 arrFunc[2] 只是用于接收数据(包括一流函数)的同一个“盒子”时,我不明白这种区别。
可能是一个线索(我不明白):在控制台中,执行最后一行后,我有以下信息:
arrFunc
{function() --[[..skipped..]] end --[[function: 0x90d7d0]], nil --[[ref]]} --[[table: 0x93afc0]] --[[incomplete output with shared/self-references skipped]]