Остальная арифметика в Dart
Кроме плюса, для типа можно связать знаки
-, * и / с методами
operator -, operator * и
operator /. Все объявления пишут в одном
классе, если операции относятся к одной величине:
class Meters {
int value;
Meters(this.value);
Meters operator -(Meters other) {
return Meters(value - other.value);
}
Meters operator *(int factor) {
return Meters(value * factor);
}
Meters operator /(int parts) {
return Meters(value ~/ parts);
}
}
Выражения с числом справа от * и /
выглядят как у примитивов, хотя слева стоит
ваш класс:
Meters road = Meters(100);
Meters piece = Meters(30);
Meters left = road - piece;
Meters doubled = left * 2;
Meters half = doubled / 4;
print(half.value);
Тип второго операнда задают в объявлении: здесь
вычитание идет между двумя Meters, а
умножение и деление - на целый множитель. Главное,
чтобы сигнатура совпадала с тем, как вызываете
выражение в коде.
Сделайте класс Grams с полем value.
Реализуйте вычитание двух масс, умножение на
int и деление на int через знаки
-, * и /. Из 50
граммов отнимите 20, результат умножьте
на 2 и выведите value.
Возьмите Grams(80), разделите на 4
записью со знаком / и выведите полученную массу.