lua table对象

lua

lua对于大型程序块和大型字符串的处理不会有任何问题. 几兆字节的程序块,大到容纳一本书的字符串均可以正确处理.java

默认的函数递归层次在16000层左右,仅仅只是简单的函数调用,没有任何的处理逻辑或者局部变量声明. 可是嵌套层次也已经足够多了,只要不是太胡来,基本不用担忧.c++

哑变量_,自己也是变量,是要占用内存的,能够输出哑变量的值,像这样print(_). 功能基本相似于匿名变量,好处在于不须要为不须要的变量起一个有意义的名字. 接收函数多重返回值的时候,很是有用.数组

加载其余lua文件,可使用dofile或者loadfile,参数是lua文件的path字符串.函数

dofile加载即执行,loadfile须要显示调用才会执行.ui

require加载lua模块.lua

全部传给lua脚本的参数,都会被保存到名为arg的table中,下标为0的索引的值是lua脚本文件名.对象

lua中的类型递归

lua是动态类型的语言,变量自己没有类型,每一个值都携带了自身的类型信息.索引

type能够返回当前值的类型的字符串表示.ip

lua没有整型值,由于双精度浮点型足以精确表示整型数值,不会出现"四舍五入"的错误.

tonumber和tostring,两个很是实用的函数.字符串转换成数值可能会引起异常(若是是非数值型字符串)

lua中#放在数组的前面,能够返回数组的长度,实际上是最后一个元素的索引.

没有空隙的数组能够用#操做符获取当前数组的长度.

若是是有空隙的数组,能够调用table.maxn来返回当前线性表的最大正向索引数.

for,break,return

数值型的for循环,三个表达式的值,是循环开始前一次性求值的,表达式中的函数调用只会执行一次. 这一点和java,c++等其余语言的for循环不一样. 全部的循环变量,都是在for循环内部局部可见.

泛型for,ipairs用于遍历数组,pairs用于遍历table,io.lines用于遍历文件中的每一行. string.gmatch用于遍历字符串中的单词.

break和return只能是一个块的最后一条语句,不过能够在任意位置用do end把return包起来, 就能够避免lua解释器的检查.

lua中的函数

lua中的函数,本质就是一个普通的变量,能够像普通变量同样赋值或者改变函数的行为.

若是table对象做为参数,lua会引用外部的table对象进行函数内部的处理.

lua中的对象还有userdata,function类型的实体等.

普通变量,仍然是赋值拷贝.

可变参数,在函数内部能够用ipairs遍历全部的参数.

select('#',...)返回可变参数的个数,参数中可能有nil值,不用用泛型for来遍历, 能够用select获取可变参数的个数,而后是数值for循环来遍历.

参数过多的时候,能够把相关的参数收集到一个table里面,控制参数的个数.

相关文章
相关标签/搜索