• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Yonaba/Lua-Class-System: Lua Class System (LCS) is a small library which offers ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

Yonaba/Lua-Class-System

开源软件地址(OpenSource Url):

https://github.com/Yonaba/Lua-Class-System

开源编程语言(OpenSource Language):

Lua 80.1%

开源软件介绍(OpenSource Introduction):

#LCS : Lua Class System# Lua Class System (LCS) is a small library which offers a clean, minimalistic but powerful API for (Pseudo) Object Oriented programming style using Lua. LCS is light-weight, abstract thus can fit in every project where OOP mechanisms are needed.

##Usage## Add LCS.lua file inside your project.
Call it using require function.
It will return a table containing a set of functions.

##Full API Overview##

  • LCS.class(args) : Creates a class
  • LCS.class.final(args) : Creates a final class.
  • LCS.class.abstract(args) : Creates a static class.
  • LCS.is_A(thing,kind) : Checks the nature of the given argument 'thing'.
  • class(args) : Default class constructor used for instantiation.
  • class:new(args) : Same as class(args)__
  • class:extends(args) : Returns a new class derived from class class.
  • class:getClass() : Returns a reference to the superclass of class class
  • class:getSubClasses() : Returns a list of all classes deriving from class class
  • class:super(method,...) : Calls a method defined in a parent of class class
  • instance:getClass() : Returns a reference to the class from which 'instance' was created
  • instance:is_A(aClass) : Checks if instance instance was instantiated from a specific class.
  • instance:super(method,...) : Calls a methods defined in a parent of a class from which object 'instance' was created

##Printing classes and objects As of v1.2, a light feature have been added.
Any attempt to print or tostring a class/instance will return a custom string, as shown in the following:

local LCS = require 'LCS'
-- A Cat Class
local Cat = LCS.class({name = 'Animal'})
-- Init
function Cat:init(name)
  self.name = name
end

print(Cat) --> "class: <table: 0058C4C0>"

local kitten = Cat('kitty')
print(kitten) --> "object: <table: 0058C628>"

Yet, this behaviour can still be easily overriden if you want to provide your own output. Just attach a method named describe to the class.

local LCS = require 'LCS'
-- A Cat Class
local Cat = LCS.class({name = 'Animal'})
-- Init
function Cat:init(name)
  self.name = name
end

print(Cat) --> "class: <table: 0058C4C0>"

local kitten = Cat('kitty')
print(kitten) --> "object: <table: 0058C628>"

-- Now providing a describe method to have our own output
function Cat:describe()
  return self.name
end

print(Cat) --> "Animal"
print(kitten) --> "kitty""

Note: describe method can be passed a variable number of arguments.

##Documentation##

##License## This work is under zLIB License
Copyright (c) 2012 Roland Yonaba

This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.

2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.

3. This notice may not be removed or altered from any source
distribution.

Bitdeli Badge




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
simenkid/lua-events: A Lua EventEmitter class in node.js style.发布时间:2022-08-17
下一篇:
cloudwu/sharplua: Embed lua 5.3 into mono发布时间:2022-08-17
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap