Catalog · How the catalog works
delphi-enum
modern Enum and Safe Code Helpers for Delphi
- ★ 5 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
delphi-enum
modern Enum and Safe Code Helpers for Delphi
TResult<T, E>
O tipo genérico TResult<T, E> representa o resultado de uma operação que pode ter sucesso ou falhar. Ele é inspirado no conceito de Result de linguagens como Rust, Haskel.
Estrutura Interna
- FIsOk: Indica se o resultado é bem-sucedido (
True) ou se houve erro (False). - FValue: Contém o valor de sucesso do tipo
T, quandoIsOkfor verdadeiro. - FError: Contém o erro do tipo
E, quandoIsOkfor falso.
Construtores
Ok(AValue: T): TResult<T, E>
Cria um objeto TResult representando um sucesso, armazenando o valor AValue no campo FValue.
Exemplo de Uso:
var
resultado: TResult<Integer, Exception>;
begin
resultado := TResult<Integer, Exception>.Ok(42);
end;Err(AError: E): Result<T, E>
Cria um objeto Result representando uma falha, armazenando o erro AError no campo FError.
Exemplo de Uso:
var
Resultado: TResult<Integer, Exception>;
begin
Resultado := TResult<Integer, Exception>.Err(Exception.Create('Erro genérico'));
end;Propriedades
- IsOk (Boolean): Retorna
Truese o resultado for sucesso. - IsErr (Boolean): Retorna
Truese o resultado for um erro. - Value (T): Retorna o valor armazenado quando
IsOkfor verdadeiro. Levanta uma exceção se acessado quandoIsErrfor verdadeiro. - Error (E): Retorna o erro armazenado quando
IsErrfor verdadeiro. Levanta uma exceção se acessado quandoIsOkfor verdadeiro.
Option<T>
O tipo genérico Option<T> representa um valor opcional que pode ou não estar presente. Ele é inspirado no conceito de Option de linguagens como Rust.
Estrutura Interna
- FHasValue: Indica se o valor está presente (
True) ou não (False). - FValue: Contém o valor do tipo
T, caso esteja presente.
Construtores
Some(AValue: T): Option<T>
Cria um objeto Option contendo o valor AValue.
Exemplo de Uso:
var
Opcao: Option<String>;
begin
Opcao := Option<String>.Some('Valor opcional');
end;None: Option<T>
Cria um objeto Option vazio, indicando a ausência de um valor.
Exemplo de Uso:
var
Opcao: Option<String>;
begin
Opcao := Option<String>.None;
end;Propriedades
- Value (T): Retorna o valor armazenado. Levanta uma exceção se o valor não estiver presente.
- HasValue (Boolean): Retorna
Truese o valor estiver presente, ouFalsecaso contrário.
Métodos
IsSome: Boolean
Retorna True se o objeto contiver um valor.
IsNone: Boolean
Retorna True se o objeto estiver vazio.
Exemplos de Uso
Utilizando TResult<T, E>
function Dividir(A, B: Integer): TResult<Integer, Exception>;
begin
if B = 0 then
Exit(Result<Integer, Exception>.Err(Exception.Create('Divisão por zero')));
result := TResult<Integer, Exception>.Ok(A div B);
end;Utilizando Option<T>
function ObterNomeUsuario(ID: Integer): Option<String>;
begin
if ID = 1 then
Exit(Option<String>.Some('João'));
result := Option<String>.None;
end;Com estas estruturas, você pode criar fluxos de controle mais seguros e explícitos, tratando sucessos e falhas de forma consistente.

