|
On 17 Jul 2013 14:27, "Roberto Ierusalimschy" <roberto@inf.puc-rio.br> wrote:
>
> > On Wed, Jul 17, 2013 at 10:10 AM, David Demelier
> > <demelier.david@gmail.com>wrote:
> >
> > > type(10) -> "number", "integer"
> > > type(10.0) -> "number", "float"
> > >
> > > This is not a bad idea, it will not break compatibility but adds a
> > > second feature to determine the actual type of the integer.
>
> I do not think it is a good idea. If something is an integer, it must
> be a number, so the first result is useless when you want the second.
> And to simply check whether something is an integer you will need extra
> local variables or 'select', to access that second result.
>
>
> > (Saying this because string.gsub is always biting me this way)
>
> That was not a good idea, either :)
>
> We moved that functionality to a new function, debug.subtype, that
> returns the following: integer, float, Cfunction, Luafunction,
> lightudata, fulludata, string, boolean, nil, table, and thread.
>
> Some of that functionality may not be strictly "debug", but anyway
> it is something you should not be using every day, and we could not
> find a better place to put that function; it may move to the global
> space...
>
> (In an ideal world, probably we should have a library with those
> functions we do not use every day (maybe with rawget, rawset,
> getmetatable, setmetatable, collectgarbage, and some others), but I do
> not think the change is worth the trouble. Just imagine the endless
> discussions about what functions should go there...)
Why not gradually do this by adding eg rawget, setmetatable etc to table but leaving them in global for compatibility?
> -- Roberto
>
>