摘要:
首先对于Lua语言,它没有打算被用来进行大型的程序设计,相反,Lua目标定于小型到中型的程序设计,通常是作为大型系统的一部分,所以它只提供了一套精简的元素,很多高级语言的概念都没有。这样Lua就成为了一个既简单又灵活的轻量级语言,但是基本上高级语言中的大多数机制都可以在现有Lua的基础上加以实现。 阅读全文
posted @ 2016-03-04 18:01
沧海一滴
阅读(1581)
评论(0)
推荐(0)
摘要:
当我们在全局环境中定义变量时经常会有命名冲突,尤其是在使用一些库的时候,变量声明可能会发生覆盖,这时候就需要一个非全局的环境来解决这问题。setfenv函数可以满足我们的需求。 setfenv(f, table):设置一个函数的环境 (1)当第一个参数为一个函数时,表示设置该函数的环境 (2)当第一 阅读全文
posted @ 2016-03-04 18:00
沧海一滴
阅读(373)
评论(0)
推荐(0)
摘要:
Lua将环境本身存储在一个全局变量_G中,(_G._G等于_G)。为了对全局命名空间更好的管理,最好是显示的声明每一个变量,可以通过使用metamethod来改变_G的行为来进行规范: -- 声明新的变量,使用rawset绕过metamethod的限制 -- 保证声明的变量不为nil,如果声明一个n 阅读全文
posted @ 2016-03-04 17:59
沧海一滴
阅读(666)
评论(0)
推荐(0)
摘要:
__index和__newindex实际上相当于是在读写表的时候分别加了一道过滤的逻辑,让读写表的操作可以被监控或说回调,利用这个特性可以实现一些带有特殊功能的表。 带有默认值的表: setdefault = function(t, v) setmetatable(t, {__index = fun 阅读全文
posted @ 2016-03-04 17:58
沧海一滴
阅读(307)
评论(0)
推荐(0)
摘要:
Metatable和Metamethod是用来干啥的?它们可以使得表a和b的表达式“a + b”变得有意义,其中metatable使两个不相关的表a和b之间可以进行操作,而操作的具体行为比如说"+"由metamethod来具体定义。 Metatable和Metamethod大多数地方都翻译成“元表” 阅读全文
posted @ 2016-03-04 17:57
沧海一滴
阅读(492)
评论(0)
推荐(0)

浙公网安备 33010602011771号