Optional parameters: Difference between revisions

Added Lua program
m (added whitespace before the TOC (table of contents), added a ;Task: (bold) header.)
(Added Lua program)
Line 1,413:
(sort :table 2)
(sort :table 3 "less? "true)</lang>
 
=={{header|Lua}}==
<lang Lua>
function table2string(tbl)
local result = '{'
for _, val in pairs(tbl) do
if type(val) == 'table' then
result = result .. table2string(val) .. ' '
else
result = result .. val .. ' '
end
end
result = result .. '}'
return result
end
 
function sortTable(op)
local tbl = op.table or {}
local column = op.column or 1
local reverse = op.reverse or false
local cmp = op.cmp or (function (a, b) return a < b end)
local compareTables = function (a, b)
local result = cmp(a[column], b[column])
if reverse then return not result else return result end
end
table.sort(tbl, compareTables)
end
 
A = {{"quail", "deer", "snake"},
{"dalmation", "bear", "fox"},
{"ant", "cougar", "coyote"}}
print('original', table2string(A))
 
sortTable{table=A}
print('defaults', table2string(A))
 
sortTable{table=A, column=2}
print('col 2 ', table2string(A))
 
sortTable{table=A, column=3}
print('col 3 ', table2string(A))
 
sortTable{table=A, column=3, reverse=true}
print('col 3 rev', table2string(A))
 
sortTable{table=A, cmp=(function (a, b) return #a < #b end)}
print('by length', table2string(A))
</lang>
{{out}}
<pre>
original {{quail deer snake } {dalmation bear fox } {ant cougar coyote } }
defaults {{ant cougar coyote } {dalmation bear fox } {quail deer snake } }
col 2 {{dalmation bear fox } {ant cougar coyote } {quail deer snake } }
col 3 {{ant cougar coyote } {dalmation bear fox } {quail deer snake } }
col 3 rev {{quail deer snake } {dalmation bear fox } {ant cougar coyote } }
by length {{ant cougar coyote } {quail deer snake } {dalmation bear fox } }
</pre>
 
=={{header|Maple}}==
29

edits