LINUX.ORG.RU

История изменений

Исправление 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("неполучилося");;

(код примерный, не тестил)