Lua学习笔记(一)

来源:互联网 发布:淘宝 500手机 编辑:程序博客网 时间:2024/05/18 01:04

lua运行环境的搭建比较简单,可以去官网查看http://www.lua.org/download.html
1.1、Chunks
一个文件或者交互模式下每一行都是一个chunks,一个chunks可以是一个语句,也可以是一系列语句,还可以函数,在Lua中MByte的Chunk很常见。
lua -i要求lua运行指定Chunk后进入交互模式
另外一个连接外部Chunk的方式是使用dofile函数,dofile函数加载文件并执行他。
例如:
这里写图片描述
在交互模式下执行如下:
这里写图片描述
1.2、全局变量
全局变量不需要声明,一个变量赋值之后即创建了该全局变量,没有初始化结果的全局变量值为nil
这里写图片描述
当你删除一个变量时只需将他的值赋为nil,当一个变量的值当且仅当不等于nil才存在。
1.3、词法约定
字母或者下划线开头的字母、下划线、数字序列。最好不要用下划线+大写字母。lua的保留字不能当标识符如下:
and,break,do,else,elseif,end,false,for,function,if,in,local,nil,not,or,repeat,return,then,true,until,while
1.4、命令行方式
lua [options][script][args]
-e:直接将命令传入lua
这里写图片描述
-l:加载一个文件
-i:进入交互模式
_PROMPT内置变量作为交互模式的提示符
这里写图片描述
在运行以前,Lua使用所有参数构造arg表。脚本名索引为0,脚本参数从1开始增加。脚本前面的参数从-1开始减少。
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”
2、类型和值
lua是动态语言,变量不要类型定义,Lua有8个基本类型:nil,boolean,number,string,userdata,function,thread和table。函数type可以测试给定变量值的类型
例如:
这里写图片描述
2.1nil
Lua中特殊类型,他只有一个值:nil,一个全局变量没有被复制默认nil,给全局变量赋值nil可以删除该变量
2.2Booleans
两个取值false和true.lua中所有的值都可以作为条件。在控制结构条件中除了false和nil为假,其他值都为真。
2.3Numbers
表示实数,Lua中没有整数。Lua中的numbers可以处理任何长整数不用担心误差
2.4Strings
字符序列,lua是8位字节,所以字符串可以包含任何数值字符。lua中字符串是不可以修改的,你可以创建一个新的变量存放你要的字符串
这里写图片描述
lua可以自动进行内存分配和释放,一个string可以只包含一个字母也可以包含一本书,可以高效处理长字符串,1M很正常
lua中的转义:
\b –后退
\f –换页
\n –换行
\r –回车
\t –制表
\ –”\”
\” –双引号
\’ –单引号
[ –左中括号
] –右中括号
例如:
这里写图片描述
还可以使用[[…]]表示字符串,嵌套不需要转义,可以换行
这里写图片描述
在运行时Lua会自动在string和numbers之间转换
这里写图片描述
..在Lua中是字符串连接符,当在一个数字后面写..时必须加空格,防止被解释错
尽管字符串和数值之间可以自动转换,但是10==”10”是false,需要显式的将字符串使用tonumber()转换,如果string不是正确的数字函数返回nil,反之可以将数字通过tostring()转换为字符串。
2.5functions
函数是第一类值,函数可以存储在变量中,可以作为函数参数,也可以作为函数返回值。
2.6userdata
userdata可以将C数据放在lua变量中,userdata在Lua中除了赋值和相等比较外没有预定义操作。userdata用来描述应用程序或者使用C实现的库创建的新类型。例如:用标准I/O库来描述文件。

2 0