Pular para o conteúdo

09 · Estruturas de Dados

Newtypes escalares validados

Um newtype com where incorpora o predicado à construção. Seu construtor new retorna Result; trate a falha ou propague-a. Operações derivadas mantêm a validação. Um newtype sem where preserva o construtor direto.

Nesta página

Um newtype com where incorpora o predicado à construção. Seu construtor new retorna Result; trate a falha ou propague-a. Operações derivadas mantêm a validação. Um newtype sem where preserva o construtor direto.

Exemplo completo

Newtypes escalares validados.

19-validated-newtypes.zolo
Playground
// Validation is part of construction: .new returns Result<Score, str>.

newtype Score(int) deriving Eq, Ord, Clone, Default, Add where |v| 0 <= v <= 100
newtype Positive(int) where |v| v > 0
newtype UserId(int)

let score = Score.new(40).unwrap()
let delta = Score.new(2).unwrap()
print(score.unwrap()) // expected: 40

print((score + delta).unwrap()) // expected: 42

print(score.clone() == score) // expected: true

print(Score.default().unwrap()) // expected: 0

print(Score.new(101).is_err()) // expected: true

print(Positive.new(0).is_err()) // expected: true

// Ordinary newtypes still construct directly.

print(UserId.new(7).unwrap()) // expected: 7

Regras e comportamento

Validação, schemas e unidades · Documentação

A partir de um checkout do repositório:

zolo examples/features/01-syntax-and-types/19-validated-newtypes.zolo

Índice global

Encontre seu caminho pela Zolo

Experimente uma ideia

Comece por aqui

9 resultados

9 resultados

enespt-br