type User {
id: Int
name: Str
}
type Shape {
Circle { radius: Int }
Point
}
func half(n: Int): Result<Int, Str> {
if n % 2 == 0 {
return Result.Ok(n / 2)
}
return Result.Error("ímpar")
}
proc main(): void {
echo "simples" // simples
echo ["simples", "1"] // ["simples", "1"]
echo 3.0 // 3
echo 0.1 + 0.2 // 0.30000000000000004
echo #Ready // Ready
echo half(4) // Ok(2)
echo half(3) // Error("ímpar")
echo User(1, "ada") // {1, "ada"}
echo [Shape.Circle(3), Shape.Point()] // [{3}, {}]
}echo escreve uma linha na saída padrão, e panic e a interpolação mostram um valor do mesmo jeito:
Str sozinha é a linha, sem aspas. Dentro de um vetor, de um registro ou de um Result, ela aparece entre aspas, que é o que distingue ["1", "2"] de [1, 2] e de ["1 2"].Int e um Bool como escritos. Um Float no seu menor formato: 3.0 aparece como 3, 0.1 + 0.2 como 0.30000000000000004, e um grande com expoente, 1.23456789123e+08.Result como Ok(…) ou Error(…).User(1, "ada") aparece como {1, "ada"}, Shape.Circle(3) como {3}, e uma variante que não carrega nada como {}. O tipo e a variante não aparecem, então um programa que precisa de um nome legível escreve um.O único valor que nenhum deles mostra é um Secret, no próximo slide.