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, и двете от които ще разгледаме в следващите глави.