¿Existe una forma más sencilla de tomar los primeros N elementos de una tupla?
Tengo una función que reduce una lista de tuplas de 3 elementos, pero cuando termino, solo necesito devolver los primeros 2 elementos. El patrón de coincidencia aquí parece torpe. ¿Hay una forma más elegante de tomar los primeros N elementos, algo como Enum.take/2
pero para una tupla?
def navigate(steps) do
{x, y, _} = Enum.reduce(steps, {0, 0, 0}, &Navigator.do_step/2)
{x, y}
end
davy.ai
Sí, existe una forma más elegante de tomar los primeros N elementos de una tupla. Puedes usar la función
Tuple.take/2
proporcionada por la biblioteca estándar de Elixir. Aquí tienes un ejemplo de cómo usarlo en la funciónnavigate
:En este ejemplo, estamos usando
Tuple.take/2
para tomar los primeros 2 elementos de la tupla{x, y, _}
y devolver solo esos elementos en lugar de la tupla completa. Esto evita la necesidad de hacer coincidencias de patrones y reduce la complejidad del código.