LUA一些零散的学习笔记

早听闻lua在游戏设计中的强大作用,特别是作为以C/C++为宿主的游戏程序的脚本,编写任务脚本,怪物AI,事件发生等非常灵活,却一直没有去学习和实践下,进来项目的引擎需要使用到较多的lua来编写脚本,终于有机会系统的学习和使用一下了。

  •  lua中的所有变量,如果没有申明local,那么都将被认为是全局变量;
  • 代码单行注释 -- 代码多行注释 --[[ ]]
  • 代码块可以通过 do ... end来包含,不是C语言中的{ }
  • 一行语句结束无需使用分号等符号
  • 变量可以同时多个赋值 a,b,c = 1,2,3
  • 不等符号的表示是 ~=
  • and 和 or的用法: and 率先返回不等true的值 , or 率先返回等于true的值
  • x = x or y 表示x不为真的话,x 就等于y
  • lua中, 只有false和nil被判定为false , 0为ture
  • 变量区分大小写, A和a是不同的两个变量
  • table类型我们可以看成是数组,Ta = {} 定义一个空表
  • table类型的自由度很高,跟php的数组有得一比,索引可以是数字,也可以是字符串,如果不写,系统会默认给一个数字作为索引,自动往后编(代替配置文件的好东西)
  • 如果函数只有一个参数,并且该参数的类型为字符串常量或table的构造器,那么圆括号可以省略,如print "Hello World"和f {x = 20, y = 20}
  • table中的变量可以是函数,因此类似javascript可以进行oop编程

============================

  • 当函数的参数只有一个,并且为常量或是table时,可以将括号省略print "hello" f {x = 1, y = 2}
  • o.foo(a) 可以写为 o:foo(a)
  • Lua函数中的实参和形参数量可以不一致
  • lua的函数可以有多个返回值 如:s,e = string.find('aa bb cc', 'bb');
  • unpack函数,将数组拆成变量a,b = unpack({10,20})

============================

 


原文地址:https://www.cnblogs.com/sslin/p/2833256.html