For 2023 - we are now fully retired from IT training. We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.
Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!
I am also active in many other area and still look after a lot of web sites - you can find an index ((here)) |
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 as below, or enter http://melksh.am/nnnn for individual articles U106 - Lua - Functions. [1685] Short circuit evaluation (lazy operator) in Lua - (2008-06-22) [1697] Sorting in lua - specifying your own sort routine - (2008-07-05) [1699] If you are learning Lua, here are some more examples - (2008-07-06) [1743] First class functions in Lua lead to powerful OO facilities - (2008-08-07) [1744] Lua examples, Lua Courses - (2008-08-08) [1847] Lua - IAQ (Infrequently Answered Questions) - (2008-10-18) [2312] What are closures in Lua? - (2009-07-31) [2347] Dot, dot, dot in Lua - variable length parameter lists - (2009-08-11) [2356] Passing multiple results back from a function - Lua, Python, etc - (2009-08-13) [2455] Lua examples - coroutines, error handling, objects, etc - (2009-10-15) [2949] Lua - variable function arguments and select - (2010-09-08) [3695] Functions are first class variables in Lua and Python - (2012-04-13)
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
|
4759 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, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 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).
|
|