lua中通过值比较Boolean,String,Number类型的值,而通过引用比较Table,function,userdate类型的值。
a = {}; a.x = 1; a.y = 0
b = {}; b.x = 1; b.y = 0
c = a
a==c but a~=b
当变量作为函数的参数进行传递时,(我的理解)类似的也是boolean,string,number类型的变量进行值传递。而table,function,userdata类型的变量进行引用传递。
Window={}
Window.new=function (o) o[1]=2*o[1] return o end
table1={10,20,30}
table2=Window.new(table1) --》table1={20,20,30},table2=table1
print(table1[1],table2[1]) --> 20 20
table3=Window.new(table1) -->table1={40,20,30}
print(table1[1],table2[1],table3[1]) -->40 40 40
table1[1]=nil
print(table1[1],table2[1],table3[1]) --->nil nil nil
function double(a) a=a*2 return a end
num1=10;
num2=double(num1)
num3=double(num1)
print(num1,num2,num3) ---->10 20 20