lua语言非常灵活,开发者发挥的空间很大,模拟oop,使用xml等,此篇文章将向大家介绍如何添加访问控制,不用此来实现 lua自动载入机制 提示开发效率。
类似java、as3等语言,访问没有定义的属性、方法、或者非公有属性时会报错,再编译阶段这些错就能暴漏出来,lua则不能,这些访问对他都是合法的,如果你使用lua做一些较大型的开发,这种能合法调用但不合法的访问,会给你带来很多坑,访问控制作者认为还是非常有必要的。
lua中导入一个moudle,常规做法是使用require(“**.**.**”),lua自动载入机制目的就是省略这一步,一定程度上有助于开发效率的提升。
先来看看访问控制类
ImmutableMetatable.lua
--- Author: terran
-- Date: 27/9/2013 15:03
local ImmutableMetatable = {};
local M = ImmutableMetatable;
function declare (item,name, initval)
rawset(item, name, initval)
item.ImmutableMetatable__declaredNames[name] = true
end
function M.__newindex(t, n, v)
if(rawget(t,"ImmutableMetatable__declaredNames") == nil) t