概述
本文不是描述Lua语言的基础,而是详述基于Cinder客户端通用框架下所依赖的一些基础的Lua概念,从而确保框架可以正常工作。Cinder客户端框架提供了一系列模拟面向对象的快捷函数,方便使用者在Lua层以类似面向对象的方式工作。
代码风格 (Coding Style)
由于Lua语言是一种灵活的脚本语言,不具备强类型检查,因此一种好的,统一的代码风格可以增强易读性,易于维护。
interface
interface
用来定义接口。interface
仅仅是对外暴露功能的定义,并不能实例化。
-- 定义I接口,对外暴露Foo方法。 |
class
class
允许单继承和实现多个interface。
定义class
-- 定义基类Base和派生类M |
实例化
实例化一个class可以通过new
方法。
local A = class("A") |
实现单例可以使用single
方法。
local A = class("A") |
实现接口
local IA = interface("IA") |
如果一个class
显式声明实现特定的interface
,那么就需要确保interface
定义的函数class
都有相应的入口实现,否则运行时会报错。
extend
框架层提供了很多基础对象,有些时候这些对象的API不能满足开发的要求,需要在原有的基础上扩展出一些定制的方法,那么可以使用extend
。
NOTE
: 扩展只能针对class的定义,不能是interface,也不能是class的实例。
例如,UI框架提供的UICtrl是所有Window的基础class,假定项目需要额外的Foo方法,又无法直接修改源码,那么就可以同过extend方法来达到目的。
local M = extend(UICtrl) |
delegate/delegator
callit
callit
是框架提供的实现链式调用的可扩展对象。方便将一个函数调用接入一个链式调用序列中。
local M = class("Example") |