1.chunk是可以把Lua识别并执行的代码。
chunk可以是单条语句,也可以是一系列语句的组合,还可以是函数,或是一个代码文件,
交互模式下的每条指令(一行或多行)都是一个chunk
交互模式下,判断指令是否结束是看输入的字符是否以;结尾。

2.Lua -i 要求Lua运行指定chunk后进入交互模式
-e 直接将命令传人Lua
-l 加载一个文件(与doFile require的区别?)

3.如果要删除一个全局变量,只需要讲变量赋值为nil即可

4.全局变量arg存放Lua的命令行参数??

5.nil的类型就是nil, nil类型的值只有nil一种

6.Lua的numbers 可以处理任何长整数不用担心误差
也可以在编译Lua 的时候使用长整型或者单精度浮点型代替numbers,在一些平台硬件不支持浮点数的情况下这个特性是非常有用的

7.Lua 中所有的值都可以作为条件。在控制结构的条件中除了false 和nil 为假,其他值都为真。所以Lua 认为0 和空串都是真

8.还可以在字符串中使用\ddd(ddd 为三位十进制数字)方式表示字母。 最长也就是3位。
"alo\n123\""和'\97lo\10\04923"'是相同的,所以Lua会把\049解析成一个字母,而不是把\0492解析成一个字母。

9.string和int的自动转换
下面写法中,注释掉的代码的写法是错误的
print (22+"44");
print ("22"+44);
print ("22"+"44");

print ("22"..44);
print(22 .. 44);
print (22 .."44");
--print (22.."44");
--print(22..44);
即是,想要int通过..转换成string的时候,需要在int和..运算符之间留一个空格

10.可以通过tonumber把string显示的转换成int,如果不成功则返回nil
反之,可以通过tostring把int转换成string
tonumber("10");
tostring(10);

11.如果两个值类型不同,则两者不同。nil只和自己相等

12.算术运算符的操作数都是实数

13.not的结果只返回true或者flase
a and b -- 如果a 为false,则返回a,否则返回b
a or b -- 如果a 为true,则返回a,否则返回b

14.在构造函数中域分隔符逗号(",")可以用分号(";")替代,通常我们使用分号用来分割不同类型的表元素
{x=10, y=45; "one", "two", "three"}
在构造函数的最后的","是可选的,可以方便以后的扩展
a = {[1]="red", [2]="green", [3]="blue",}

15.遇到赋值语句,Lua会先计算右边表达式的值然后在进行赋值操作。
同样,在数据for语句中,for的三个表达式也只会被计算一次,并且是在循环开始前。
数据for的控制变量默认声明为局部变量,只在for循环体内有效,
数据for循环体内不要改变控制变量的值,那样做的结果是未知的。如果要退出循环,使用break
数据for的三个表达式之间用,分隔
范型for 和数值for 有两点相同:
1)控制变量是局部变量
2)不要修改控制变量的值

16.table的遍历
t={x=10, y=45; "one", "two", "three"}
for k in pairs(t) do print(k, type(k)) end
print("------");
for i,v in ipairs(t) do print(v, type(i), type(v)) end
上面代码输出:
1 number
2 number
3 number
y string
x string
------
one number string
two number string
three number string
即是,用i,v遍历,只能遍历出key-value但对于系统自动补充的下标不能遍历出。
但是key遍历的话,就可以遍历出所有的key

16.break和return
Lua 语法要求break 和return 只能出现在block 的结尾一句(也就是说:作为chunk的最后一句,或者在end 之前,或者else 前,或者until 前),例如:
local i = 1
while a[i] do
if a[i] == v then break end
i = i + 1
end
有时候为了调试或者其他目的需要在block 的中间使用return 或者break,可以显式的使用do..end 来实现:
function foo ()
return --<< SYNTAX ERROR
-- 'return' is the last statement in the next block
do return end -- OK
... -- statements not reached
end

最新文章

  1. C#跨平台手机应用开发工具Xamarin尝试 与Eclipse简单对比
  2. C# 技巧(3) C# 操作 JSON
  3. redis集群同步迁移方法(一):通过redis replication实现
  4. Qt之QComboBox(基本应用、代理设置)(转)
  5. JavaScript和angularJs语法支持严格模式:”use strict”
  6. iOS-深复制(mutableCopy)与浅复制(copy)
  7. angularjs 创建自定义的指令
  8. 关于Latch
  9. LVM的一般操作过程
  10. 关于如何获取移动端 touchmove 事件中真正触摸点下方的元素
  11. JavaScript的数组知识案例之随机点名器
  12. C程序设计实验报告
  13. git push上传代码到gitlab上,报错401/403(或需要输入用户名和密码)
  14. mongoDB的使用(NodeJs)
  15. Solidworks直接打开SWB文件报错怎么办
  16. crond检查服务状态
  17. 文件描述符file descriptor与inode的相关知识
  18. Java的优势
  19. java实现二叉树demo
  20. Web Server 在IIS上部署ASP.NET Core项目

热门文章

  1. memcached单点
  2. dogo 官方翻译 Ajax with dojo/request
  3. Python面试题之Python的Super方法
  4. APPIUM API整理(python)---操作类
  5. setState详解
  6. [POI2006]MET-Subway
  7. 初入Spring-boot(二)
  8. 求职之路共分享——亲身面试题(一) 1/三层与MVC区别
  9. Codeforces Round #364 (Div. 2) C. They Are Everywhere 尺取法
  10. Treflection03_getFields_getField