|
|
||
|
On 9/15/2013 5:26 PM, Luiz Henrique de Figueiredo wrote:
2013/9/10 Andrew Starks <andrew.starks@trms.com>:In my very humble opinion (and despite my own transgressions into discussions on its redesign :), it gets this balance perfectly... Except when it prompts strings to numbers. .)More precisely: the exact spot where this irks me is that if you set metamethods for str:__add etc, they don't get invoked when tonumber() succeeds for both operands, EVEN WHEN BOTH ARE STRINGS.Wthat do you mean, exactly? Can you please give an example?
debug.setmetatable("",{
__add=function()
error("can't add strings, you know") end})
print("1"+"2")
this prints 3 rather than raising an error.
change the last line to print("1"+"ZZ")
and the error in the above metatable is raised, rather than the standard
"attempt to perform arithmetic on a string value".