aardio - 关于表的指针同步

本文详细探讨了Lua中表的成员改变与表本身的改变对变量指针的影响。通过实例展示了当表成员变化时,两个引用同一表的变量会同步更新,而表重新赋值时则会产生新的指针。同时,使用了`table.mix`、直接赋值、拆分再组合以及克隆等操作来说明这些变化。最后,通过示例代码展示了各种情况下的指针变化情况。
  • 表成员改变,不影响变量指针。

  • 表本身改变,会改变变量指针。

var a = {1,2,3}
var b = a 

1、b = a  表示两个表用一个地址,指针一样。

2、当改变其中一个表的【成员】的值时,如 a[1] = 5 ,因为改变的是成员值,没有影响表的指针,所以两个表的值都会同步改变。

3、当某一个【表】本身被改变(重新赋值)时,如 a = {4,5,6} (而不是分别给成员赋值 a[1]=4; a[2]=5; a[3]=6;) 则给a表一个新的指针,但不影响b表。

var a = {1,2,3}

var b = a  // 此时两个表内容和指针都一样

b = ..table.mix(a)  // 因为mix()的返回值就是表a,所以本句相当于b=a,此时两个表内容和指针都一样

b = {1,2,3}  // 直接赋值:此时两个表内容一样,指针不一样

b ={..table.unpack(a)}  // 拆分再组合:此时两个表内容一样,指针不一样

b = ..table.clone(a)  // 克隆:此时两个表内容一样,指针不一样

4、两个表,即使初始值内容一样,指针也不一样。

var a = {1,2,3}

var b = {1,2,3}  // 此时两个表内容一样,指针不一样

import console; 

var a = {1,2,3}
var b = a

console.dump(a,b,a=b,'\n\n');

a[1] = 4
a[2] = {4,5,6}
a[3] = "789"
console.dump(a,b,a=b,'\n\n');

// a = null
// a = 4
a = {5,6,7}
console.dump(a,b,a=b);

console.pause(true);

软件介绍 快手AAuto Quicker更名为aardioaardio是专用于桌面软件快速开发的新一代混合型编程语言, 兼具动态、静态语言优势,语法更可兼容大部分流行语言,学习成本低,开发速度快,并永久免费。 一键发布为绿色软件。生成独立EXE执行文件。唯一能同时支持动态类型、静态类型开发的语言。兼容流行C系语法、Pascal语法,学习成本最低。可内嵌C语言、汇编、Java、PHP、Javascript、VBS.支持面向对象、Ducking Type、支持中文编程。支持COM动态、静态接口、支持标准DLL组件。标准库全部开源、全部使用AAuto代码编写。提供可视化开发环境,支持多线程开发。支持用网页开发软件界面、可与HTML、JS无缝整合。完美支持web自动化、轻松开发网站机器人。完美支持所有游戏辅助工具技术。 一句代码即可实现CALL外部EXE函数。支持内存读写、抓包、鼠标、按键模拟、监控。 自aardio10开始,aardio已支持网站开发、FastCGI服务端开发,使用 wsock.tcp.simpleHttpServer 甚至只需要一句代码就可以创建一个微型嵌入式HTTP服务端(可以结合浏览器组件方便的用于桌面软件的Web界面开发),aardio语法可直接支持与PHP类似的HTML模板语法,提供语言级别的模板解析,一个aardio源码文件,可以放aardio源码,也可以直接放html,或者放html,aardio混合的模板代码,aardio都能完美支持。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢光庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值