Em Gleam, as constantes são uma forma de dar nomes a valores. Elas são definidas com a palavra-chave const.
pub const pi: Float = 3.14159
pub fn circle_area(radius: Float) -> Float {
radius *. radius *. pi
}
Quando definidas com a palavra-chave pub, as constantes de módulo podem ser acessadas de outros módulos. Caso contrário, elas só podem ser acessadas de dentro do módulo em que foram definidas.
O módulo gleam/order da biblioteca padrão do Gleam contém o tipo Order, usado para comparar valores.
A definição de Order é assim:
pub type Order {
Gt
Eq
Lt
}
O tipo tem três variantes, cada uma usada para representar a relação entre um valor e outro valor:
Gt - o valor é maior que o outro valor.Eq - o valor é igual ao outro valor.Lt - o valor é menor que o outro valor.Se um tipo de dados pode ser comparado por tamanho, é comum que o módulo defina uma função compare que retorna um valor Order. Por exemplo, gleam/float e gleam/int definem funções compare que operam sobre números de ponto flutuante e inteiros, respectivamente.
int.compare(1, 2)
// -> Lt
int.compare(2, 2)
// -> Eq
float.compare(1.0, 2.0)
// -> Lt
Funções de ordenação como list.sort geralmente recebem uma função que retorna um valor Order, permitindo que quem faz a chamada defina como a lista deve ser ordenada.
list.sort([3, 7, 3, 1], by: int.compare)
// -> [1, 3, 3, 7]
Tori é uma jornalista especializada em clima e quer escrever um artigo sobre o tempo em diferentes cidades. Ela tem dados sobre o tempo em várias cidades e quer classificá-las com base na temperatura, mas algumas temperaturas estão em Fahrenheit e outras em Celsius. Ela precisa da sua ajuda para converter as temperaturas para a mesma unidade e classificá-las.
Defina a função fahrenheit_to_celsius, que recebe uma temperatura em Fahrenheit como argumento e retorna a temperatura em Celsius.
Para converter Fahrenheit em Celsius, subtraia 32 do valor em Fahrenheit e depois divida o resultado por 1.8.
fahrenheit_to_celsius(72.5)
// -> 22.5
Defina a função compare_temperature, que recebe duas temperaturas e retorna um valor Order indicando se a primeira temperatura é menor que, igual a ou maior que a segunda temperatura.
compare_temperature(Celsius(30.5), Fahrenheit(82.1))
// -> Gt
Defina a função sort_cities_by_temperature, que recebe uma lista de cidades e as retorna da mais fria para a mais quente.
sort_cities_by_temperature([
City(name: "London", temperature: Celsius(30.5)),
City(name: "Paris", temperature: Fahrenheit(82.1))
])
// -> [
// City(name: "Paris", temperature: Fahrenheit(82.1)),
// City(name: "London", temperature: Celsius(30.5)))
// ]
Crie sua conta no Exercism para aprender e dominar Gleam com 33 conceitos122 exercícios e mentoria humana de verdade, tudo de graça.