Lua
文章平均质量分 67
iCode0410
这个作者很懒,什么都没留下…
展开
-
lua
Lua是一种简单、可扩展、高效的脚本语言,被广泛应用于各种领域,如嵌入式系统、移动设备、Web服务器、有效。 Lua一开始就被设计成能与C语言或其他语言编写的软件相互集成。而Lua并不像C那么全面,但提供了C不太擅长的特性,例如对硬件的高级抽象、动态结构、无冗余、简易的测试和调试。另外,Lua还实现了一个安全的运行环境、一套自动内存管理机制、优秀的字符串处理能力和动态大小数组的处理能力。原创 2014-09-20 20:28:50 · 895 阅读 · 0 评论 -
Lua 编译
尽管Lua被称为是一种解释型的语言,但Lua确实允许在运行源代码之前,将源代码预编译成一种中间形式(类比Python的.pyc)。区别解释型语言的主要特征在于编译器是否是语言运行时库的一部分,即是否有能力执行动态生成的代码(Lua可以通过dofile执行Lua代码)。 其实,dofile的核心功能是由loadfile完成的,可以这样来定义dofile: loadfile原创 2014-09-21 14:11:20 · 743 阅读 · 0 评论 -
Lua table
Lua的table提供了Map的功能,实现了"关联数组",并且整数、字符串甚至nil都可以作为索引/key;table没有固定的大小。 基于table,可以表示普通数组、符号表、集合、记录、队列和其他数据结构。 而Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。例如io.read表示使用"read"来索引table io。原创 2014-09-20 21:38:13 · 925 阅读 · 0 评论 -
Lua 协程 coroutine
协程是协同程序的简称,顾名思义,就是协同工作的程序。协程拥有自己独立的桟、局部变量和PC计数器,同时又与其他协同程序共享全局变量和其他大部分东西; 协程与线程的主要区别在于,一个多线程程序可以同时运行几个线程(并发执行、抢占),而协同程序却需要彼此协作地运行,即一个多协程程序在任意时刻只能运行一个协程,并且正在执行的协程只会在其显式地要求挂起(suspend)时,它的执行才会暂停(无抢占原创 2014-09-21 16:18:19 · 1551 阅读 · 0 评论 -
Lua 动态链接
C语言应用程序中经常使用动态链接机制集成各个模块;不过,动态链接机制并不是ANSI C标准的一部分,也就是说实现方法是不可以移植的。 Lua通常不会包含任何无法通过ANSI C来实现的机制,如果动态链接是一个例外。Lua打破了对可移植性的准则,为几种平台实现了一套动态链接机制。 package.loadlib是动态链接功能的核心函数,接收两个参数:动态库的完整路径名、函数名称。原创 2014-09-21 14:24:56 · 941 阅读 · 0 评论 -
Lua 异常处理 pcall xpcall debug
如果需要在Lua中处理错误,必须使用函数pcall(protected call)来包装需要执行的代码。 pcall接收一个函数和要传递个后者的参数,并执行,执行结果:有错误、无错误;返回值true或者或false, errorinfo if pcall(function_name, ….) then-- no errorelse -- some er原创 2014-09-21 14:46:37 · 7008 阅读 · 0 评论 -
Lua iterator 迭代器
Lua有迭代器的概念,通过不同的迭代器,几乎可以遍历所有的东西。标准库提供的几种迭代器:io.lines(迭代文件中的每行), pairs(迭代table元素),ipairs(迭代数组元素), string.gmatch(迭代字符串中单词)等。 另外,可以自定义迭代器 使用pairs迭代器变量table> t = {2,3,4,5}> for i,v in pairs(原创 2014-09-21 11:05:23 · 2299 阅读 · 0 评论 -
Lua function函数,可变参数, 局部函数,尾递归优化
在Lua中,函数是作为"第一类值"(First-Class Value),这表示函数可以存储在变量中,可以通过参数传递给其他函数,或者作为函数的返回值(类比C/C++中的函数指针),这种特性使Lua具有极大的灵活性。 Lua对函数式编程提供了良好的支持,可以支持嵌套函数。 另外,Lua既可以调用Lua编写的函数,还可以调用C语言编写的函数(Lua所有的标准库都是C语言写的)。原创 2014-09-21 10:55:22 · 8587 阅读 · 0 评论 -
Lua string字符串
Lua中字符串可以使用""或'',类似Javascript中的用法> ="sdfdsf"sdfdsf> ='sfdd'sfdd> ='abc"'abc"> ="abc'"abc' 同Java、Python一样,Lua的字符串是不可修改的值,可以通过string.gsub函数来替换字符串中的子串:> s = string.gsub('abc de原创 2014-09-20 21:11:17 · 1609 阅读 · 0 评论 -
Luarocks
参考资料http://www.luarocks.org/ http://dhq.me/luarocks-a-deployment-and-management-system-for-lua-modules Luarocks是一个安装lua 模块的工具,在unbuntu下apt-get install luarocks即可安装。 如果想查询某个模块,原创 2014-09-21 17:05:24 · 1350 阅读 · 0 评论