я вижу в этом определенное непостоянство философии
Думаю, что это утверждение не очень верно. Дело в том, что в Lua (в стандартной сборке) нет целых чисел и все числа представляются вещественными числами. В случае арифметических операций, в которых смешаны строки и числа, особой опсности нет — после преобразования получится тот же ответ, что и при явном преобразовании или при непосредственной записи константы в исходнике. (Раз уж число представлено строкой, то его строковая запись — это все, что мы про него знаем.) Уже при обратном преобразовании (неявное преобразование числа в строку при конкатенации) чаще всего получается не то, чего ожидает пользователь, но это легко заметить и использовать явное форматирование (string.format()). В случае же сравнения автоматическое преобразование сделает это сравнение крайне неустойчивой операцией. Для вещественного числа строка будет содержать приближенное представление (наши знания о числе), а другой операнд будет содержать точное значение числа со всеми накопленными погрешностями. В результате очень во многих случаях результаты сравнения будут непредсказуемыми.
no subject
Думаю, что это утверждение не очень верно. Дело в том, что в Lua (в стандартной сборке) нет целых чисел и все числа представляются вещественными числами. В случае арифметических операций, в которых смешаны строки и числа, особой опсности нет — после преобразования получится тот же ответ, что и при явном преобразовании или при непосредственной записи константы в исходнике. (Раз уж число представлено строкой, то его строковая запись — это все, что мы про него знаем.) Уже при обратном преобразовании (неявное преобразование числа в строку при конкатенации) чаще всего получается не то, чего ожидает пользователь, но это легко заметить и использовать явное форматирование (string.format()). В случае же сравнения автоматическое преобразование сделает это сравнение крайне неустойчивой операцией. Для вещественного числа строка будет содержать приближенное представление (наши знания о числе), а другой операнд будет содержать точное значение числа со всеми накопленными погрешностями. В результате очень во многих случаях результаты сравнения будут непредсказуемыми.
Вот совсем простой пример: