LUA模拟面向对象:类与对象

首先还是向大家介绍一下国产LUA框架Vanilla。 这次我们来看看Vanilla中如何用Lua 模拟面向对象编程。实现主要是使用lua的setemetatable特性来实现的。下面程序大体的处理流程是:

类和对象创建流程: 1.创建一个Controller在类模板程序。 2.在Controller:new方法里,创建返回一个实例对象instance(lua table),对象使用Controller的函数接口,做为对象实例产生的“类”模板。 3.使用new方法的形参,传递新建立对象的属性数据,成员变量。

[code] local Controller = {}

function Controller:new(app_config, tst_val) local instance = { app_config = app_config, tst_val = tst_val } setmetatable(instance, {__index = self}) return instance end

function Controller:display(view_tpl, values) end

function Controller:getTestField() return self.tst_val end

return Controller [/code]

测试类文件的流程: 1.用require引入contorller类定义文件。 2.创建对象初始化要使用的数据结构:config, val。 3.调用Controller类模板的new方法,创建新的对象实例,传入需要形参。 4.使用新创建的对象实例的getTestFiled()接口方法,返回我们在第三步传入的测试字符串:“test value” 5.输出返回值,确认是否与传入的数据一致。

[code] Controller = require “controller”

local config = { ip=”127.0.0.1”, port=”8080” } local val = “test value”

local obj_instance = Controller:new(config, val) local ret = obj_instance:getTestField() print(ret)

[/code]

作者:糖果

PS:转载到其它平台请注明作者姓名及原文链接,请勿用于商业用途。

https://github.com/idevz/vanilla

糖果

糖果
LUA从入门到放弃

Moonscript如何显示复选框

Moonscript如何显示复选框 Continue reading

Lapis框架的常用处理方法

Published on March 02, 2017