Macro Functions
From GiderosMobile
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Supported platforms:
Available since: Gideros 2017.10
Description
Macro Functions receive a list of tokens and output a string which will be pasted into code at compile time.
name @ (| ...body... |)
You should use parenthesis around markers - '|' is the preferred marker.
The same marker should be used to close macro body with closing parenthesis right after it.
You can use any of these markers:
\`~ ! # $ % ^ & * / + = |
You can redefine a macro with @@:
name @@ (| ...another_body... |)
To call macro function use its name with parenthesis as with usual functions:
name(...arguments...)
Examples
Enumeration
enum @ (|
local t = ...
local r = {}
for i = 1, #t, 2 do
table.insert(r, t[i] .. " @ " .. i // 2 + 1)
end
print(table.concat(r, " "))
return table.concat(r, " ")
|)
enum(apple, orange, melon)
print(apple, orange, melon) --> 1 2 3
Turning off the print command
print @ (| return "" |)
Unroll loops
dotimes @ (|
local times = table.remove(..., 1)
return (table.concat(..., " ").." "):rep(times)
|)
local t = {}
dotimes(10 print "Boom!")
A Sum macro example
-- comma counts as an argument meaning MYSUM(o1, o2) has three parameters
MYSUM @ (| return "("..(...)[1] + (...)[3] ..")" |)
print (MYSUM(1,2) * MYSUM(3,1))
Methods |
EventsConstants |