20 lines
639 B
Lua
20 lines
639 B
Lua
-- This function returns another function that
|
|
-- keeps n1 and n2 in scope, ie. a closure.
|
|
function multiplier (n1, n2)
|
|
return function (m)
|
|
return n1 * n2 * m
|
|
end
|
|
end
|
|
|
|
-- Multiple assignment a-go-go
|
|
local x, xi, y, yi = 2.0, 0.5, 4.0, 0.25
|
|
local z, zi = x + y, 1.0 / ( x + y )
|
|
local nums, invs = {x, y, z}, {xi, yi, zi}
|
|
|
|
-- 'new_function' stores the closure and then has the 0.5 applied to it
|
|
-- (this 0.5 isn't in the task description but everyone else used it)
|
|
for k, v in pairs(nums) do
|
|
new_function = multiplier(v, invs[k])
|
|
print(v .. " * " .. invs[k] .. " * 0.5 = " .. new_function(0.5))
|
|
end
|