lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

On Thursday, November 21, 2013, Coda Highland wrote:
On Thu, Nov 21, 2013 at 2:58 PM, Petite Abeille
<> wrote:
> On Nov 21, 2013, at 11:32 PM, Kevin Martin <> wrote:
>> 2) I can guarantee that at some point in the future, that module which currently only has one function will need another, and the rewrite will be horrific if not returning a table.
> Meh… behold the functable:
> local aFunction = function() return 'Yeah!' end
> debug.setmetatable( aFunction, { __index = function( self, aKey ) return aKey end } )
> print( aFunction() )
> print( )
> print( )
> print( aFunction.baz )

Or of course go the other way around and return a table that's also
callable, which is probably preferable for reflection.

/s/ Adam

++ for functable. You can pack version information into its fields. 

If the function is also a field, the user can avoid the speed penalty, right from require:

 " mymod = require("mymod").new"

There is no reason that you can't just do a function, though.  If you're redistributing the module, a table is expect, which feels more sorted out.