lua-users home
lua-l archive

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


> Not having followed discussions and development of 5.3, but I find it
> counterintuitive that %f has to be used in format() where previously %d
> and %x would perform the needed conversion of numbers of any type to an
> integer. Similarly, luaL_checkinteger() bails out if a numerical value
> is not an integer. Is there a rationale to and can someone provide
> links to previous discussions of this behavior? Thanks.
> 
> My first impression was that both cases needlessly break compatibility,
> in both cases the caller is fully aware of the possibility to lose
> information, and the convenience of the auxlib function is forfeit. For
> me as a caller it would be obvious to distinguish between checking for
> a type and to receiving an integer (or representation of such) as the
> closest approximation of a number.

Previous versions of Lua never specified *how* numbers were rounded in
the C API. So, if you called something like "string.sub(s,3.6)", you
could receive a string with either 3 or 4 bytes. This does not sound
like a behavior worth keeping.

-- Roberto