您的位置:首页 > 编程语言 > Lua

Lua基础语法

2015-02-05 11:08 841 查看
1、每个语句结尾的分号是可选的。如果同一行有多个语句最好用分号分开;

2、dofile加载文件并执行他 例如:dofile("lib1.lua")

3、全局变量:不需要声明,赋值给一个变量即创建了一个全局变量;访问没有初始化的全局变量结果是:nil;删除全局变量就赋值nil;

4、lua大小写敏感。

5、单行注释:-- 多行注释: --[[ --]]

6、lua [options] [script [args]]

    -e:直接将命令传入Lua;
-l:加载一个文件;
-i:进入交互模式;
Lua 使用所有参数构造 arg 表。脚本名索引为 0,脚本的参数从 1 开始增加。脚本前面的参数从-1 开始减少。
prompt> lua -e "sin=math.sin" script a b
arg[-3] = "lua"
arg[-2] = "-e"
arg[-1] = "sin=math.sin"
arg[0] = "script"
arg[1] = "a"
arg[2] = "b"

7、函数 type 可以测试给定变量或者值的类型。 没有初始化的变量类型为nil;

   nil:全局变量没有被赋值前默认都是nil;同样给全局变量赋值nil就是删除全局变量;

   booleans:false,true, 除了false和nil都为真, 所以0和空串都是真;

   numbers:表示实数,在lua中没有整数,

   strings:指字符的序列,字符串是不可以修改的,可以高效的处理长字符串,1M的string很常见,""和''都可以表示字符串。lua中的转义序列:

            \a bell
\b back space -- 后退
\f form feed -- 换页
\n newline  -- 换行
\r carriage return -- 回车
\t horizontal tab  -- 制表
\v vertical tab
\\ backslash -- "\"
\" double quote -- 双引号
\' single quote -- 单引号
\[ left square bracket -- 左中括号
\] right square bracket -- 右中括号
[[...]]表示字符串,可以包含多行,也可以嵌套且不会解释转义序列,如果第一个字符是换行符会被自动忽略掉。
..在lua中是字符串连接符,string转成数字tonumber();反正tostring()

8、userdata 可以将 C 数据存放在 Lua 变量中, userdata 在 Lua 中除了赋值和相等比较外没有预定义的操作。 userdata 用来描述应用程序或者使用 C 实现的库创建的新类型。

9、Lua 通过引用比较 tables、 userdata、 functions。也就是说当且仅当两者表示同一个对象时相等。例如:
a = {}; a.x = 1; a.y = 0
b = {}; b.x = 1; b.y = 0
c = a
a==c but a~=b

10、逻辑运算符认为 false 和 nil 是假( false),其他为真, 0 也是 true
and 和 or 的运算结果不是 true 和 false,而是和它的两个操作数相关。and 的优先级比 or 高, 例如:
a and b -- 如果 a 为 false,则返回 a,否则返回 b
a or b  -- 如果 a 为 true,则返回 a,否则返回 b
11、表最简单的构造函数是{},创建一个空表,表的第一个元素索引是1,不管用何种方式创建 table,我们都可以向表中添加或者删除任何类型的域,构造函数仅仅影响表的初始化.

12、lua可以对多个变量同时赋值。例如:a, b = 10, 2*x <--> a=10; b=2*x
赋值语句 Lua 会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值:x, y = y, x -- swap 'x' for 'y'
如果变量的个数和值的个数不一致时,Lua会一致以变量个数为基础策略如下:
变量个数 > 值的个数 按变量个数补足 nil
变量个数 < 值的个数 多余的值会被忽略

    多值赋值经常用来交换变量,或将函数调用返回给变量 例如:a, b = f(), f()返回两个值,第一个赋给 a,第二个赋给 b。

13、local创建一个局部变量,局部变量只在被声明的那个代码块内有效。代码块:指一个控制结构内,一个函数体,或者一个 chunk(变量被声明的那个文件或者文本串)。
应该尽可能的使用局部变量,有两个好处:
1. 避免命名冲突
2. 访问局部变量的速度比全局变量更快.
我们给 block 划定一个明确的界限: do..end 内的部分。

14、当函数只有一个参数并且这个参数是字符串或者表构造的时候,()可有可无:print "Hello World" <--> print("Hello World")
Lua 函数中,在 return 后列出要返回的值得列表即可返回多值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Lua