diff options
author | chai <chaifix@163.com> | 2021-11-17 23:03:07 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-11-17 23:03:07 +0800 |
commit | 27d6efb5f5a076f825fe2da1875e0cabaf02b4e7 (patch) | |
tree | 44f301110bc2ea742908ed92a78eba0803cd3b60 /Tools/LuaMacro/tests/test-cskin.lua | |
parent | b34310c631989551054d456eb47aaab5ded266a4 (diff) |
+ LuaMacro
Diffstat (limited to 'Tools/LuaMacro/tests/test-cskin.lua')
-rw-r--r-- | Tools/LuaMacro/tests/test-cskin.lua | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/Tools/LuaMacro/tests/test-cskin.lua b/Tools/LuaMacro/tests/test-cskin.lua new file mode 100644 index 0000000..5e6a7c8 --- /dev/null +++ b/Tools/LuaMacro/tests/test-cskin.lua @@ -0,0 +1,47 @@ +-- run like so: luam -lcskin test-cskin.lua
+
+class Named {
+ def _init(self,name) { -- name for ctor
+ self.name = name
+ }
+
+ def __tostring(self) { -- metamethod
+ return self.name
+ }
+}
+
+class Shamed: Named { -- doesn't have to define a ctor
+ def __tostring(self) {
+ return "shame on "..self.name
+ }
+}
+
+class Person : Named {
+ def _init(self,name,age) { -- ctor must call inherited ctor explicitly
+ Named._init(self,name)
+ self:set_age(age)
+ }
+
+ def set_age(self,age) { -- plain method
+ self.age = age;
+ }
+
+ def __tostring(self) {
+ return Named.__tostring(self)..' age '..self.age
+ }
+}
+
+a = Named 'Alice'
+print(a)
+b = Shamed 'Job'
+print(b)
+
+aa = {|Named(n)| n in {'Johan','Peter','Mary'}}
+
+forall(a in aa) { print(a) }
+
+p = Person ('Bob',12)
+print(p)
+
+
+
|