Results
Gleam не използва изключения (exceptions), вместо това
пресмятанията (computations), които може да са успешни (succeed) или да се
провалят (fail), връщат стойност от вградения тип
Result(value, error)
(резултат - стойност, грешка). Този тип има
два варианта (variants):
-
Ok
(добре, успешно), който съдържа връщаната стойност (return value) при успех на пресмятането. -
Error
(грешка), който съдържа причината за неуспеха на пресмятането.
Типът е обобщен (generic) с два тип-параметъра - един за стойността при
успех и един за грешката. По този начин Result
може да съдържа
стойности от произволни типове при успех или неуспех.
Обикновено програмите или библиотеките на Gleam дефинират потребителски тип (custom type) с по един вариант (variant) за всяка възможна грешка заедно с информация за грешката, която би била полезна на програмиста.
Това е предимство пред изключенията (exceptions), защото веднага става ясно какви грешки може да върне дадена функция и компилаторът ще се увери, че се обработват. Край на неприятните изненади с неочаквани изключения!
Стойността на Result
може да се обработва чрез съпоставяне
с шаблони (pattern matching) в case
израз, но с оглед на
това колко често функциите връщат Result
, това може да стане
тромаво. Кодът на Gleam обикновено използва стандартната библиотека
gleam/result
и use
изрази за работа с Result
, и двете от
които ще разгледаме в следващите глави.