[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: tonumber metamethod?
- From: Mike Pall <mikelu-0506@...>
- Date: Fri, 3 Jun 2005 13:24:39 +0200
Hi,
Markus Fritsche wrote:
> Luiz Henrique de Figueiredo <lhf <at> tecgraf.puc-rio.br> writes:
> > No reason, except that it never came up. What would you use a tonumber
> > metamethod for?
>
> Well, tonumber accepts only numbers like "42.23", not "1,042.23" or "1.032,42"
> (german number format). Wouldn't be a tonumber-metamethod the right place for
> this? Or is it cleaner to implement this in a function of its own?
I guess this is just not common enough to warrant an extra metamethod.
Metamethods are for implementing general behaviour of user-defined
objects. While most objects have a canonical string representation
(if only for print()'ing them), very few have a canonical numerical
representation (what is tonumber({}) supposed to return?).
Oh and I think you may have something mixed up: Since "1,042.23"
is a string, you'd need a __tonumber metamethod for _all_ strings.
While overriding behaviour for all strings is possible with the
newest Lua 5.1-work6, it's not that useful in this case.
You can easily define your own string -> number conversion function
and (optionally) redefine the tonumber() global to get the same
effect.
Bye,
Mike