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

rxi/classic: Tiny class module for Lua

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

开源软件名称(OpenSource Name):

rxi/classic

开源软件地址(OpenSource Url):

https://github.com/rxi/classic

开源编程语言(OpenSource Language):

Lua 100.0%

开源软件介绍(OpenSource Introduction):

Classic

A tiny class module for Lua. Attempts to stay simple and provide decent performance by avoiding unnecessary over-abstraction.

Usage

The module should be dropped in to an existing project and required by it:

Object = require "classic"

The module returns the object base class which can be extended to create any additional classes.

Creating a new class

Point = Object:extend()

function Point:new(x, y)
  self.x = x or 0
  self.y = y or 0
end

Creating a new object

local p = Point(10, 20)

Extending an existing class

Rect = Point:extend()

function Rect:new(x, y, width, height)
  Rect.super.new(self, x, y)
  self.width = width or 0
  self.height = height or 0
end

Checking an object's type

local p = Point(10, 20)
print(p:is(Object)) -- true
print(p:is(Point)) -- true
print(p:is(Rect)) -- false 

Using mixins

PairPrinter = Object:extend()

function PairPrinter:printPairs()
  for k, v in pairs(self) do
    print(k, v)
  end
end


Point = Object:extend()
Point:implement(PairPrinter)

function Point:new(x, y)
  self.x = x or 0
  self.y = y or 0
end


local p = Point()
p:printPairs()

Using static variables

Point = Object:extend()
Point.scale = 2

function Point:new(x, y)
  self.x = x or 0
  self.y = y or 0
end

function Point:getScaled()
  return self.x * Point.scale, self.y * Point.scale
end

Creating a metamethod

function Point:__tostring()
  return self.x .. ", " .. self.y
end

License

This module is free software; you can redistribute it and/or modify it under the terms of the MIT license. See LICENSE for details.




鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

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

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

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