写lua时需要注意的地方
- 条件语句判断时,只有false和nil会导致判断为假,其他的任何值都为真。
- Lua 的字符串与编码无关; 它不关心字符串中具体内容。
- 标准 Lua 使用 64 位整数和双精度(64 位)浮点数, 但你也可以把 Lua 编译成使用 32 位整数和单精度(32 位)浮点数。 以 32 位表示数字对小型机器以及嵌入式系统特别合适。
- table 是一个关联数组, 也就是说,这个数组不仅仅以数字做索引,除了 nil 和 NaN 之外的所有 Lua 值 都可以做索引
- Lua 语言对大小写敏感:
and
是一个保留字,但And
与AND
则是两个不同的有效名字。 作为一个约定,程序应避免创建以下划线加一个或多个大写字母构成的名字 (例如 _VERSION) - Lua 5.3 之后支持了位运算
- 关于函数可返回值的数量限制和系统有关。 这个限制一定大于 1000
- 当你使用 Lua API 时, 就有责任保证做恰当的调用。 特别需要注意的是, 你有责任控制不要堆栈溢出。 你可以使用
lua_checkstack
这个函数来扩大可用堆栈的尺寸。 - Lua 支持协程,也叫 协同式多线程。 一个协程在 Lua 中代表了一段独立的执行线程。 然而,与多线程系统中的线程的区别在于, 协程仅在显式调用一个让出(yield)函数时才挂起当前的执行。
Lua 从一个对象
obj
中获取一个元方法的过程:rawget(getmetatable(obj) or {}, "__" .. event_name)
取长度操作符写作一元前置符
#
。 字符串的长度是它的字节数(就是以一个字符一个字节计算的字符串长度)。程序可以通过
__len
元方法来修改对字符串类型外的任何值的取长度操作行为。如果
__len
元方法没有给出, 表t
的长度只在表是一个 序列 时有定义。 序列指表的正数键集等于 {1..n} , 其中 n 是一个非负整数。 在这种情况下,n 是表的长度。 注意这样的表{10, 20, nil, 40}
不是一个序列,因为它有键
4
却没有键3
。 (因此,该表的正整数键集不等于 {1..n} 集合,故而就不存在 n。) 注意,一张表是否是一个序列和它的非数字键无关。return functioncall
这样的调用形式将触发一次 尾调用。 Lua 实现了 完全尾调用(或称为 完全尾递归): 在尾调用中, 被调用的函数重用调用它的函数的堆栈项。 因此,对于程序执行的嵌套尾调用的层数是没有限制的。 然而,尾调用将删除调用它的函数的任何调试信息。 注意,尾调用只发生在特定的语法下, 仅当 return 只有单一函数调用作为参数时才发生尾调用; 这种语法使得调用函数的所有结果可以完整地返回。 因此,下面这些例子都不是尾调用:return (f(x)) -- 返回值被调整为一个return 2 * f(x)return x, f(x) -- 追加若干返回值f(x); return -- 返回值全部被舍弃return x or f(x) -- 返回值被调整为一个
Lua 语言有词法作用范围。 变量的作用范围开始于声明它们之后的第一个语句段, 结束于包含这个声明的最内层语句块的最后一个非空语句。 看下面这些例子:
x = 10 -- 全局变量do -- 新的语句块local x = x -- 新的一个 'x', 它的值现在是 10print(x) --> 10x = x+1do -- 另一个语句块local x = x+1 -- 又一个 'x'print(x) --> 12endprint(x) --> 11endprint(x) --> 10 (取到的是全局的那一个)
注意这里,类似
local x = x
这样的声明, 新的x
正在被声明,但是还没有进入它的作用范围, 所以第二个x
指向的是外面一层的变量。
转载于:https://www.cnblogs.com/andyidea/p/4515531.html
写lua时需要注意的地方相关推荐
- 你能体会那种写 Python 时不用 import 的幸福吗?
在写 Python 程序的时候,我们需要依赖一些库,所以一开始我们总是: import xxx as xxx from xxx import xxx 我们有时候写着写着发现需要引入新的库,就又得回到前 ...
- 随笔 | 写代码时极有可能面临的焦虑
随笔 | 写代码时极有可能面临的焦虑 本科学管理,被诸如<市场营销学>这类课程的作业搞得焦头烂额时,就会羡慕学计算机(或更广一点如「工科」)的同学:工程问题,有绝对的标准与尺度:不像这种经 ...
- 为什么写论文时一定要引用论文?
许多同学在写论文时,都会发出一个疑问,为什么要引用他人论文?把自己的内容写好了不就行了吗?引用他人论文,又要看大量论文,又要找几个结果不同的原因,甚至在参考文献格式上也都要下很大的功夫,这样费时费力的 ...
- 关于在写代码时如何使用绝对路径与相对路径及其简单介绍
在写代码时,我们经常需要使用到其他的一些资源,但是对于一些像我这样经常用绝对路径不用相对路径的新手菜鸟来说,看网上的那些关于绝对路径相对路径的介绍资料也有点难理解,毕竟-没试过的话确实不大能理解. 所 ...
- 假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的cache的总容量
5单选(1分) 假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的c ...
- VSCode内用markdown写代码时出现很多段落标记的解决方案
在VSCode内用markdown写代码时,出现很多段落标记如下图所示. 开始以为是代码的问题,粘贴了很多次,不行. 把代码放在记事本里,粘贴过来,不行. 敲一段代码试试,也不行. 看来是文件本身出了 ...
- 写论文时要用到的word技巧
1 WORD里边怎样设置每页不同的页眉?如何使不同的章节显示的页眉不同? 答:分节,每节可以设置不同的页眉.文件--页面设置--版式--页眉和页脚--首页不同 2 请问word中怎样让每一章用不同的页 ...
- 论文排版——写毕业论文时图片格式问题,图片只显示一小部分,其他部分被上方文字覆盖
写毕业论文时图片格式问题 写毕业论文时图片格式问题,图片只显示一小部分,其他部分被上放文字覆盖,如图所示: 这种情况出现的原因是论文内容部分一般要求的格式是宋体小四首行缩进行距固定值20磅,问题就在这 ...
- 在公司写代码时,我总想回家带娃。
桔妹导读:离天空最近的地方,是父亲的肩膀.在这个特别的日子里,小编也搜集了一些滴滴年轻的工程师奶爸们的分享,听他们聊一聊当爸的初体验.也借此机会祝福所有做了父亲的工程师们,节日快乐! 内心充满激动和紧 ...
最新文章
- android ScrollView/NestedScrollView 添加可拖动的滚动条
- Spring Cloud第一篇:服务注册与发现Eureka
- ECCV 2020 Oral | 可逆图像缩放:完美恢复降采样后的高清图片
- php 判断上传的是否是图片,php图片上传检测是否为真实图片格式
- 什么是O/RMapping?为什么要用O/R Mapping?
- AI工程师面试凭高频问题提前准备,命中率会是多少?
- 实验讲解OSPF网络类型
- C# winform窗体 ComboBox控件
- Objective-C之数组
- 利用函数求两个数的最大值
- openstack手动部署简单记录
- 计算机二级的评分和未来教育的评分,计算机二级office高级应用是人工评分还是机器评分?...
- mysql服务启动失败
- 迅雷有linux版本吗,迅雷 - Linux Wiki
- Crackme 25
- Swift游戏实战-跑酷熊猫 09 移除场景之外的平台
- 【论文笔记】A survey on security and privacy of federated learning(综述)
- 细品《穆斯林的葬礼》一书
- How to Write a Spelling Corrector代码注释
- 使用 var 关键字在 Java 中使用动态类型
热门文章
- c语言printf到指定文件,急求如何将下列C语言程序数据存储到文件中?
- springboot需要tomcat服务器吗_SpringBoot学习(二):内嵌服务器引擎(Tomcat,Jetty)实现原理...
- apk图标存放位置_安卓系统下安装完apk程序后,具体的文件夹位置在哪里呢?
- java中的语句有哪些_java中的循环语句有哪些
- 模糊搜索怎么实现_干货 | 你真的了解自己是怎么搜索的吗_01
- python输入代码如何清除_Bug清除手册-代码书写规范与基本使用(Python)
- linux条件测试的三种,shell编程之条件测试 | 旺旺知识库
- linux 递归创建线程,[linux]二叉树的建立及其递归遍历(C语言实现)
- 案例 github_github 项目搜索技巧-让你更高效精准地搜索项目
- 简要分析电话光端机的常见问题