|
Returning multiple values from a function - Lua
Does it strike you as odd that in many languages, functions can take in as many parameters as you like, but can only return one? Of course, you can return a single collection object (list, array, tuple, dictionary, hash, Vector, object ...) or set up global variables to hold side effect results if you wish. But in Lua, you can truly return multiple values:
function food()
return "carrots","peas","gravy","haggis","neaps","tatties"
end
Individual results can be assigned to a series of individual variables, left to right, with any excess or results being discarded. And Lua's use of the variable "underscore" - _ - as a convention of a place filler - can be used to skip over unwanted intermediates if you have any:
first,second,_,fourth = food()
print (first,second,fourth)
If you want to know how many values you're getting back, or to get one back by numbered position, there's a built in select function in Lua:
-- Give me the number of return parameters
iwant = select("#",food())
print (iwant)
-- Give me the third return parameter
iwant = select(3,food())
print (iwant)
One slight 'issue' - if you bring back a multiple result and then use it straight away in another function call, only the first result will be passed on if there are other parameters following. Let me show you that behavior, as it can be a "catch" the first time:
print (food(),food())
gives you
carrots carrots peas gravy haggis neaps tatties
That's a nice meal, but we're apparently missing a portion of peas, gravy, haggis, neaps and tatties - but have plenty of carrots.
(written 2010-04-15, updated 2010-05-14)
Associated topics are indexed under U106 - Lua - Functions. [3695] Functions are first class variables in Lua and Python - (2012-04-13) [2949] Lua - variable function arguments and select - (2010-09-08) [2455] Lua examples - coroutines, error handling, objects, etc - (2009-10-15) [2356] Passing multiple results back from a function - Lua, Python, etc - (2009-08-13) [2347] Dot, dot, dot in Lua - variable length parameter lists - (2009-08-11) [2312] What are closures in Lua? - (2009-07-31) [1847] Lua - IAQ (Infrequently Answered Questions) - (2008-10-18) [1744] Lua examples, Lua Courses - (2008-08-08) [1743] First class functions in Lua lead to powerful OO facilities - (2008-08-07) [1699] If you are learning Lua, here are some more examples - (2008-07-06) [1697] Sorting in lua - specifying your own sort routine - (2008-07-05) [1685] Short circuit evaluation (lazy operator) in Lua - (2008-06-22)
Some other Articles
Making a Lua program run more than 10 times fasterEvery cloud has a silver liningHow do our tactics help us meet the strategy, for the greater good?Escapee Grandparents welcome - Henfield and MelkshamReturning multiple values from a function - LuaMixins example in PythonRegular Expressions in PythonMultiple inheritance in Python - complete working exampleTraffic lights in PythonPython - access to variables in the outer scope
|
3732 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75 at 50 posts per page
This is a page archived from The Horse's Mouth at
http://www.wellho.net/horse/ -
the diary and writings of Graham Ellis.
Every attempt was made to provide current information at the time the
page was written, but things do move forward in our business - new software
releases, price changes, new techniques. Please check back via
our main site for current courses,
prices, versions, etc - any mention of a price in "The Horse's Mouth"
cannot be taken as an offer to supply at that price.
Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).
|
|