Las constantes en Gleam son una forma de dar nombres a valores. Se definen con la palabra clave const.
pub const pi: Float = 3.14159
pub fn circle_area(radius: Float) -> Float {
radius *. radius *. pi
}
Cuando se definen con la palabra clave pub, se puede acceder a las constantes de módulo desde otros módulos; de lo contrario, solo se puede acceder a ellas desde el módulo en el que se definen.
El módulo gleam/order de la biblioteca estándar de Gleam contiene el tipo Order, que se usa para comparar valores.
La definición de Order es así:
pub type Order {
Gt
Eq
Lt
}
El tipo tiene tres variantes, cada una de las cuales representa la relación entre un valor y otro valor:
Gt - el valor es mayor que el otro valor.Eq - el valor es igual al otro valor.Lt - el valor es menor que el otro valor.Si un tipo de datos se puede comparar por tamaño, es habitual que el módulo defina una función compare que devuelva un valor Order. Por ejemplo, gleam/float y gleam/int definen funciones compare que operan sobre floats e ints respectivamente.
int.compare(1, 2)
// -> Lt
int.compare(2, 2)
// -> Eq
float.compare(1.0, 2.0)
// -> Lt
Las funciones de ordenación como list.sort suelen tomar una función que devuelve un valor Order, lo que permite a quien la llama definir cómo debe ordenarse la lista.
list.sort([3, 7, 3, 1], by: int.compare)
// -> [1, 3, 3, 7]
Tori es periodista y escribe sobre el clima. Quiere escribir un artículo sobre el tiempo en distintas ciudades. Tiene datos sobre el tiempo en distintas ciudades y quiere clasificarlas en función de su temperatura, pero algunas temperaturas están en Fahrenheit y otras en Celsius. Necesita tu ayuda para convertir las temperaturas a la misma unidad y ordenarlas.
Define la función fahrenheit_to_celsius, que recibe como argumento una temperatura en Fahrenheit y devuelve la temperatura en Celsius.
Para convertir de Fahrenheit a Celsius, resta 32 al valor en Fahrenheit y, a continuación, divide el resultado entre 1,8.
fahrenheit_to_celsius(72.5)
// -> 22.5
Define la función compare_temperature, que recibe dos temperaturas y devuelve un valor Order que indica si la primera temperatura es menor que, igual que o mayor que la segunda.
compare_temperature(Celsius(30.5), Fahrenheit(82.1))
// -> Gt
Define la función sort_cities_by_temperature, que recibe un array de ciudades y las devuelve de la más fría a la más cálida.
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)))
// ]
Regístrate en Exercism para aprender y dominar Gleam con 33 conceptos122 ejercicios y mentoría humana real, todo gratis.