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里面,控制参数的个数.
相关文章推荐
- lua树型打印table
- openresty+lua做接口调用权限限制
- 100行lua代码实现简单目录浏览器
- lua脚本demo实例
- lua编辑器
- lua math库
- 我的第一个lua脚本
- Lua中的正则表达式及源码分析
- Lua入门教程 7.编译、执行与错误
- lua 分割字符串
- lua基础语法2
- lua基础语法
- 100行lua代码实现简单目录浏览器
- fblualib安装教程
- Lua 函数参数万能转化基本数据类型
- lua 中调用函数的坑点
- LuaJavaBridge - Lua 与 Java 互操作的简单解决方案
- 使用Lua编写Web端模板引擎的实例代码分享
- lua计算时间差 按照日历方式来计算时间差 而不是固定每个月都是多少天来计算
- 编译lua5.3扩展.so文件时遇到的一些问题总结