Попытка придумать, как вычесть 5 минут из 2 часов.
Нет смысла вычитать 5 из 2, потому что в итоге мы получаем -3 общих единицы времени, что бесполезно.Но если «час» является подтипом «минуты», мы можем преобразовать 2 часа в 120 минут и получить 115 минут, или 1 час и 55 минут.
Аналогично, если мы хотим добавить 5 яблок к5 апельсинов, мы не можем оценить это с точки зрения яблок, но можем ожидать, что в итоге получим 10 фруктов.
Кажется, в приведенных выше примерах, и, как правило, при использовании числа в качестве прилагательного, целые числа должны бытьпараметризованный типом объекта, который они описывают.Я думаю, что было бы очень полезно, если бы вместо объявления
val hours = 2
val minutes = 5
вы могли бы сделать что-то вроде
val hours = 2[Hour]
val minutes = 5[Minute]
val result = hours - minutes
assert (result == 115[Minute])
Есть ли что-то подобное, будет ли это полезно, и это то, чтоможет быть реализовано?
РЕДАКТИРОВАТЬ : чтобы уточнить, приведенный выше пример времени - просто случайный пример, который я придумал.Мой вопрос заключается в том, является ли вообще идея параметризованных чисел полезной концепцией, так же как вы параметризовали списки и т. Д. (Ответ может быть «нет», я не знаю!)