полчаса туплю над дизайном функции в части обработки ошибок.
Как канонично для D делать?:
1. как в сях, int return code + данные через ref/out параметры
2. Бросать исключения
3. Вводить что то типа Result<T> повсеместно (а ля Раст)
4. какой то другой способ?
Вообще 2, но можно и 3. Return code особенно int когда есть enum и result — как по мне моветон.
Для 3 - лучше взять https://code.dlang.org/packages/expected
Кмк 2-ой вариант худший, ибо больше возьни в обработке. Как вариант можешь повсеместно возвращать tuple, включающий статус ошибки.
Это уже Го стайл получается
собсна к тому и веду)
(3) без match syntax то ещё дрочево
С UFCS не так уж и больно...
Обсуждают сегодня