From 27d6efb5f5a076f825fe2da1875e0cabaf02b4e7 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 17 Nov 2021 23:03:07 +0800 Subject: + LuaMacro --- Tools/LuaMacro/tests/test-cskin.lua | 47 +++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Tools/LuaMacro/tests/test-cskin.lua (limited to 'Tools/LuaMacro/tests/test-cskin.lua') 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) + + + -- cgit v1.1-26-g67d0