Здравствуйте, Sinclair, Вы писали:
TB>>А как этот долбаный фанатик собирается писать банальную задачу "прибавить к позиции шахматной фигуры смещение и проверить валидность результата"? Ведь согласно его идеям позиция шахматной фигуры должна иметь тип [0..8), а смещение должно иметь тип [-7 ..7], и складывать их нельзя, и любая попытка скастить одно к другому вызовет исключение в некоторых случаях.
TB>>То есть он предлагает что-то типа
TB>>TB>>try_cast_or_throw<Position>((position as int) + (offset as int))
TB>>
TB>>?
S>Не знаю, что там Волшин, а в нормальных языках и библиотеках оператор + просто определяется для (position, offset)->position и (offset, offset)->offset.
S>Зачем городить преобразования туда-обратно мне решительно непонятно. Задача отличается от алгебры поверх DateTime / TimeSpan исключительно дополнительными ограничениями на диапазон валидных значений.
И как предлагается этим пользоваться? На каждый чих писать отдельный тип с кучей операторов? Ещё тип для смещений этого типа. Не очень понятно. Звучит как маразм или я что-то не понимаю.