117 lines
1.7 KiB
Lua
Executable File

require 'unclasslib'
print [[
> A = class()
> function A:__init(s) self.s = s end
> function A:ps() print(self.s) end
> B = class(A)
> function B:__init(s, s1)
> self[A]:__init(s)
> self.s1 = s1
> end
> function B:ps1() print(self.s1) end
> C = class(B)
> function C:__init(s, s1, s2)
> self[B]:__init(s, s1)
> self.s2 = s2
> end
> function C:ps2() print(self.s2) end
> D = class(A) -- no constructor, initialize A by default constructor.
]]
A = class()
function A:__init(s) self.s = s end
function A:ps() print(self.s) end
B = class(A)
function B:__init(s, s1)
self[A]:__init(s)
self.s1 = s1
end
function B:ps1() print(self.s1) end
C = class(B)
function C:__init(s, s1, s2)
self[B]:__init(s, s1)
self.s2 = s2
end
function C:ps2() print(self.s2) end
D = class(A) -- no constructor, initialize A by default constructor.
print [[
> a = A("a")
> a:ps()
> print(a:is_a(A))
> print(a:is_a(B))
> print(a:is_a(C))
> print(a:is_a(D))
]]
a = A("a")
a:ps()
print(a:is_a(A))
print(a:is_a(B))
print(a:is_a(C))
print(a:is_a(D))
print [[
> b = B("b", "b1")
> b:ps()
> b:ps1()
> print(b:is_a(A))
> print(b:is_a(B))
> print(b:is_a(C))
> print(b:is_a(D))
]]
b = B("b", "b1")
b:ps()
b:ps1()
print(b:is_a(A))
print(b:is_a(B))
print(b:is_a(C))
print(b:is_a(D))
print [[
> c = C("c", "c1", "c2")
> c:ps()
> c:ps1()
> c:ps2()
> print(c:is_a(A))
> print(c:is_a(B))
> print(c:is_a(C))
> print(c:is_a(D))
]]
c = C("c", "c1", "c2")
c:ps()
c:ps1()
c:ps2()
print(c:is_a(A))
print(c:is_a(B))
print(c:is_a(C))
print(c:is_a(D))
print [[
> d = D("d", "extra")
> d:ps()
> print(d:is_a(A))
> print(d:is_a(B))
> print(d:is_a(C))
> print(d:is_a(D))
]]
d = D("d", "extra")
d:ps()
print(d:is_a(A))
print(d:is_a(B))
print(d:is_a(C))
print(d:is_a(D))