Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
Python, Lua, Tcl, C and C++ training - public course schedule [here]
Private courses on your site - see [here]
Please ask about maintenance training for Perl, PHP, Java, Ruby, MySQL and Linux / Tomcat systems
 
First class functions in Lua lead to powerful OO facilities

"In Lua, function names are first class variables." Ok - so what does that mean?

At the most direct / simplest, it means that a function can be stored in a variable - so that you can write

function oik()
  print ("does the real work!")
  end


and then

action = oik
action()

to run the function via another variable ....

"So what?" you may ask.

It means that you can set up a series of functions ... and then a series of tables each containing the data about a particular (in my example) person, and within the table have a member variable that defines which particular function is run at a certain time.

By, in turn, storing those other tables into a table of people, it means you can then write a loop which processes data for each person, and which takes a slightly different action depending on which particular function (logic) you have referenced within each table object.

One you've got this set up ... the resultant code can be really elegant ... from a table called team as your team of people ...

quay,bollard = next(team, nil)
while quay do
  print (quay,bollard["name"],
    bollard["approach"](oik),
    bollard["age"],"\n")
  quay,bollard = next(team, quay)
  end


... and different logic will be run from the "approach" member depending on what approach you have defined for that particular member.

This is a powerful technique where you have a number of things (members) each of which may have slightly different logic applied to them - in fact (although I have avoided the words so far) it's an excellent application of Object Oriented principles. You have

• Each table within the master table being an object
• Code that varies depending on the object being handled (polymorphism)
• Common logic only being defined once, with extra added as necessary to specific objects (inheritance)
• The ability to add in extra types (classes) without having to rewrite the main logic in any way

Complete example at this page
(written 2008-08-07)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
G996 - Well House Consultants - Newsletter Scripts
  [3179] Oops - I typed ci not vi, and have lost my file ... - (2011-02-21)
  [2539] Changing Images - (2009-12-17)
  [2433] Controlling, supressing, enabling PHP error messages - (2009-10-02)
  [2360] Error Handling in Lua with assert and pcall - (2009-08-13)
  [2259] Grouping rows for a summary report - MySQL and PHP - (2009-06-27)
  [2145] Using the internet to remotely check for power failure at home (PHP) - (2009-04-29)
  [2046] Finding variations on a surname - (2009-02-17)
  [1954] mod_rewrite for newcomers - (2008-12-20)
  [1813] Ajax - going Asyncronous and what it means - (2008-09-28)
  [1665] Factory method example - Perl - (2008-06-04)
  [1601] Replacing the last comma with an and - (2008-04-04)
  [1505] Script to present commonly used images - PHP - (2008-01-13)
  [1487] Efficient PHP applications - framework and example - (2007-12-28)
  [1387] Error logging to file not browser in PHP - (2007-10-11)
  [1321] Resetting session based tests in PHP - (2007-08-26)
  [1217] What are factory and singleton classes? - (2007-06-04)
  [1123] mysqldump and mysqlrestore - (2007-03-30)
  [1066] Final, Finally and Finalize - three special words in Java - (2007-02-05)
  [1001] .pdf files - upload via PHP, store in MySQL, retrieve - (2006-12-19)

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)
  [2723] Returning multiple values from a function - Lua - (2010-04-15)
  [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)
  [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)

U107 - Object Orientation - the Lua way
  [4753] Lua, Tcl, Python, C and C++ courses - at our Melksham HQ or on your site - forward from July 2017 - (2017-07-02)
  [4573] Classic style OO code - in Lua - (2015-11-05)
  [4572] Tables with values and code in Lua - looks like an object? - (2015-11-05)
  [4273] Dot or Colon separator between table name and member in Lua - what is the difference? - (2014-05-06)
  [4248] Metatables, Metamethods, classes and objects in Lua - (2014-03-18)
  [4117] Is Lua an Object Oriented language? - (2013-06-15)
  [3730] What is a metatable? How do I set one up? How do I use them? Lua - (2012-05-12)
  [3727] Using Lua tables as objects - (2012-05-11)
  [3694] Special __ methods you can use in Lua metatables - (2012-04-12)
  [3683] Weak references in Lua - what are they, and why use them? - (2012-04-04)
  [3524] Metaclasses (Python) and Metatables (Lua) - (2011-11-17)
  [3396] Tables as Objects in Lua - a gentle introduction to data driven programming - (2011-08-17)
  [3142] Private and Public - and things between - (2011-01-22)
  [2710] __index and __newindex in Lua - metatable methods - (2010-04-05)
  [2703] Lua Metatables - (2010-04-02)
  [2701] Is Lua an Object Oriented language? - (2010-04-01)
  [2359] A fresh example - objects the Lua way - (2009-08-13)
  [2318] For Lua Programmers AND for Town Planners - (2009-08-02)
  [1819] Calling base class constructors - (2008-10-03)
  [1692] Towards Object Oriented Programming in Lua - (2008-06-30)


Back to
Lua - Table elements v table as a whole
Previous and next
or
Horse's mouth home
Forward to
Lua examples, Lua Courses
Some other Articles
Who is watching you?
London for the visitor, for free
Moodle, Drupal, Django (and Rails)
First class functions in Lua lead to powerful OO facilities
Lua - Table elements v table as a whole
Age Concern
Vertical London
Bath, Snake or Nag?
Clean code, jump free (Example in Lua)
4755 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).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2017: 404 The Spa • Melksham, Wiltshire • United Kingdom • SN12 6QL
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/1743_Fir ... ities.html • PAGE BUILT: Sat May 27 16:49:10 2017 • BUILD SYSTEM: WomanWithCat