-- Normal way to define a function
function funcOne(foo)
print(foo)
end
-- Another way
funcTwo = function(bar) print(type(bar)) end
-- Let's see them both in action
funcOne('hello')
funcTwo('hello')
-- Pass function as paramater.
-- Note the lack of the () after funcOne.
-- We want to pass the function, not call it.
funcTwo(funcOne)
-- Hmm, that worked. Lets try something odd
myTable = {}
myTable[funcTwo] = "Does this work?"
print(myTable[funcTwo])
LS0gTm9ybWFsIHdheSB0byBkZWZpbmUgYSBmdW5jdGlvbgpmdW5jdGlvbiBmdW5jT25lKGZvbykKICAgIHByaW50KGZvbykKZW5kCgotLSBBbm90aGVyIHdheQpmdW5jVHdvID0gZnVuY3Rpb24oYmFyKSBwcmludCh0eXBlKGJhcikpIGVuZAoKLS0gTGV0J3Mgc2VlIHRoZW0gYm90aCBpbiBhY3Rpb24KZnVuY09uZSgnaGVsbG8nKQpmdW5jVHdvKCdoZWxsbycpCgotLSBQYXNzIGZ1bmN0aW9uIGFzIHBhcmFtYXRlci4KLS0gTm90ZSB0aGUgbGFjayBvZiB0aGUgKCkgYWZ0ZXIgZnVuY09uZS4KLS0gV2Ugd2FudCB0byBwYXNzIHRoZSBmdW5jdGlvbiwgbm90IGNhbGwgaXQuCmZ1bmNUd28oZnVuY09uZSkKCi0tIEhtbSwgdGhhdCB3b3JrZWQuIExldHMgdHJ5IHNvbWV0aGluZyBvZGQKbXlUYWJsZSA9IHt9Cm15VGFibGVbZnVuY1R3b10gPSAiRG9lcyB0aGlzIHdvcms/IgpwcmludChteVRhYmxlW2Z1bmNUd29dKQ==