A few notable Space Lua quirks.
Space Lua is intended to be a more or less complete implementation of Lua 5.4. However, a few features are (still) missing:
Space Lua converts strings to numbers like standard Lua.
Syntax:
+ or - signs are accepted before the number.42, -3.5, .5, 5., 1e3, -2.5E-2).0x10, -0XFF),p or P exponent (e.g., 0x1.8p1, -0X10.3P-1).Failure handling:
attempt to perform arithmetic on a non-number.tonumber(s) returns nil on failure.tonumber(s, base) parses signed integers in bases 2..36 (without decimal points or exponents) and returns nil on invalid input string or base.Examples (with tonumber function):
| Code | Result | Expected |
|---|---|---|
tonumber(' 42 ') | ${tonumber(' 42 ')} | 42 |
tonumber('-0xFf ') | ${tonumber('-0xFf ')} | -255 |
tonumber('0x1.8p1') | ${tonumber('0x1.8p1')} | 3.0 |
tonumber('1e-2') | ${tonumber('1e-2')} | 0.01 |
tonumber('abc') | ${tonumber('abc')} | nil |
tonumber('1010', 2) | ${tonumber('1010', 2)} | 10 |
tonumber(' +fF', 16) | ${tonumber(' +fF', 16)} | 255 |
tonumber('8', 8) | ${tonumber('8', 8)} | nil |
Examples (with arithmetic operations):
| Code | Result | Expected |
|---|---|---|
'0xfFfFp1' | ${'0xfFfFp1'} | string: 0xfFfFp1 |
'0xffffP-3' + 0 | ${'0xffffP-3' + 0} | number: 8191.875 |
-'123E-12' | ${-'123E-12'} | number: -1.23e-10 |