This repository was archived by the owner on Nov 20, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsingle.lua
More file actions
116 lines (97 loc) · 1.7 KB
/
single.lua
File metadata and controls
116 lines (97 loc) · 1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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))