• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > 关于lua语言的两个小疑问

关于lua语言的两个小疑问

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了lua语言翻译,lua语言,lua语言教程,lua语言视频教程,lua语言编辑器等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:关于lua语言的两个小疑问
描述:

function GetTable()
   if gTable == nil then
       gTable = {}
   end
   return gTable
end

我想问两个问题:

  1. 这里 的gTable是局部变量还是全局变量
  2. 返回gTable的时候返回的是引用,还是返回给外部调用者一份拷贝数据


解决方案1:

  • 不是局部变量,可能是全局变量或者upvalue
    local gTable
    ....
    function GetTable()
        if gTable == nil then
    ....

这时是 upvalue

  • 传值
    lua 没有传引用的概念,对于table或function或string等请理解为传地址
    返回时必然拷贝数据,你可以理解为拷贝了表的地址然后返回,不会引起表的深拷贝

传值还是传引用,这能开启一场大战的,还是去C++那里战吧。

解决方案2:

lua中只要没有用local声明的都是全局变量,用local声明的在声明的那段代码段里面有效。 lua中的table都是引用传递的,包括 tablea = tableb 这种写法,两个值都是一样的,改一个另一个也会变化。网上有一些deepcopy的方法,原理上相当于创建新table,遍历老table挨个给新table赋值。

解决方案3:

只要没有声明local的都是全局变量

解决方案4:

1, 全局
2, 引用


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • lua语言写出来的代码,怎么保存?(保存成lua文件)
  • Lua的正确发音
  • 关于lua语言的两个小疑问

相关文章

  • 2017-06-17嵌入式中三极管基础电路的设计
  • 2017-06-05 初学windows驱动程序设计,请推荐几本好书
  • 2017-06-05 虚拟存储器是否真实存在于硬盘中
  • 2017-06-05 想做基于3g的无线视频监控,求大神指教
  • 2017-06-05 每一分每一秒每秒中可以发出多少个HTTP请求?
  • 2017-06-05 vxworks68使用shell命令sysReboot会有延迟
  • 2017-06-05 fpga通过vga显示mif图片怎么生成?
  • 2017-06-05 tftLCD屏图像左右移动,周期性白屏,求大神赐教!
  • 2017-06-05 OSX编译bochs报错[configure:error:Ccompilercannotcreateexecutables]
  • 2017-06-05 WindowsNT驱动程序加载与2K有何不同?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 嵌入式开发中DSP与FPGA的关系
    • sim900aGPRS链接服务器,次数越多越出问题
    • 请问cc1100如何实现碰撞检测
    • ZigBeeCC2530能不能实现双向通信
    • PIC18F46K22串口传输问题
    • 修改uboot中的sdfuse指令
    • STM32加上LCM12864R串行连接液晶显示问题。。急求解答。。急
    • IIC接口
    • twain在windows2000和windowsXp中的不同?
    • 刚刚毕业的大学生,对于未来的前景很迷茫,希望指点!

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有