= 1/2;
Приходится писать let x:f32 = 1f32/2f32; или let x:f32 = 1.0/2.0;
Очень неудобно. Нет как в Java приведение типов?
Типы в 80% случаев выведутся сами на основе дальнейшего использования.
Угу, чтоб было как в Си?
Если писать просто 1/2, то результат 0.
Нечитабельно же?
Ну да, потому что i32: Add<Output = i32>
Даже так? let x:f32 = 1/2;
А что это по твоему должно делать?
Абсолютно читабельно Сейчас глубоко начинаю погружаться в Си, и поверьте мне, синтаксис Раста приведением типов явным - это мед для глаз Голова не кипит
а как компилятор поймёт, ты хочешь разделить целые числа и потом привести к float, или привести целые числа к флоат и разделить их?
А почему не достаточно, если одно значение float, другое — int, то результат будет float?
Преобразовать инт в аналогичную по значению десятичную дробь - выполняется много вещей в рантайме Байтовое представление меняется до неузнаваемости Таким образом в расте вы видите явно по сигнатуре функции значение какого типа она умеет принимать, вы все преобразования должны делать руками говоря компилятору «я знаю что делаю, доверься мне» И у вас все явно, исходный код явно отражает все что происходит в рантайме
Так-то концепцию я понимаю, больше волнует читабельность.
1 / 2 равно 0
Обсуждают сегодня