История изменений
Исправление
Debasher,
(текущая версия)
:
Не-не-не. Нужен не нулл (None), а Error.
Это не нулл. Это `вот такой тип`, как по ссылке.
В языках со статической типизацией приходится извращаться: если значение меньше нуля, значит это код ошибки (Си) или после операции проверяй флаг ошибки (Си++).
Я про языки с _нормальной_ статической типизацией, конкретно пример на ocaml. В си типизации считай нет.
Вот более подробный пример:
type connect_status = Success | BadHostname of string | CannotConnect of string;;
let connect host = if (bad_hostname host) then BadHostname("плохой хост")
else if (can_connect host) then really_connect host
else CannotConnect("неполучилося");;
(код примерный, не тестил)
Исходная версия
Debasher,
:
Не-не-не. Нужен не нулл (None), а Error.
Это не нулл. Это «вот такой тип», как по ссылке.
В языках со статической типизацией приходится извращаться: если значение меньше нуля, значит это код ошибки (Си) или после операции проверяй флаг ошибки (Си++).
Я про языки с _нормальной_ статической типизацией, конкретно пример на ocaml. В си типизации считай нет.
Вот более подробный пример:
type connect_status = Success | BadHostname of string | CannotConnect of string;;
let connect host = if (bad_hostname host) then BadHostname("плохой хост")
else if (can_connect host) then really_connect host
else CannotConnect("неполучилося");;
(код примерный, не тестил)