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

lua table对象

2016-06-28 00:00 295 查看

lua

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

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

哑变量_,本身也是变量,是要占用内存的,可以输出哑变量的值,像这样print(_).
功能基本类似于匿名变量,好处在于不需要为不需要的变量起一个有意义的名字.
接收函数多重返回值的时候,非常有用.

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

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

require加载lua模块.

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

lua中的类型

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

type可以返回当前值的类型的字符串表示.

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里面,控制参数的个数.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: