上一页 1 ··· 417 418 419 420 421 422 423 424 425 ··· 785 下一页
摘要: 首先对于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)
上一页 1 ··· 417 418 419 420 421 422 423 424 425 ··· 785 下一页