Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
34
Task/Abstract-type/Lua/abstract-type-1.lua
Normal file
34
Task/Abstract-type/Lua/abstract-type-1.lua
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
BaseClass = {}
|
||||
|
||||
function class ( baseClass )
|
||||
local new_class = {}
|
||||
local class_mt = { __index = new_class }
|
||||
|
||||
function new_class:new()
|
||||
local newinst = {}
|
||||
setmetatable( newinst, class_mt )
|
||||
return newinst
|
||||
end
|
||||
|
||||
if not baseClass then baseClass = BaseClass end
|
||||
setmetatable( new_class, { __index = baseClass } )
|
||||
|
||||
return new_class
|
||||
end
|
||||
|
||||
function abstractClass ( self )
|
||||
local new_class = {}
|
||||
local class_mt = { __index = new_class }
|
||||
|
||||
function new_class:new()
|
||||
error("Abstract classes cannot be instantiated")
|
||||
end
|
||||
|
||||
if not baseClass then baseClass = BaseClass end
|
||||
setmetatable( new_class, { __index = baseClass } )
|
||||
|
||||
return new_class
|
||||
end
|
||||
|
||||
BaseClass.class = class
|
||||
BaseClass.abstractClass = abstractClass
|
||||
8
Task/Abstract-type/Lua/abstract-type-2.lua
Normal file
8
Task/Abstract-type/Lua/abstract-type-2.lua
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
A = class() -- New class A inherits BaseClass by default
|
||||
AA = A:class() -- New class AA inherits from existing class A
|
||||
B = abstractClass() -- New abstract class B
|
||||
BB = B:class() -- BB is not abstract
|
||||
A:new() -- Okay: New class instance
|
||||
AA:new() -- Okay: New class instance
|
||||
B:new() -- Error: B is abstract
|
||||
BB:new() -- Okay: BB is not abstract
|
||||
Loading…
Add table
Add a link
Reference in a new issue