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