es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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
Tags:  

Answer

  1. Avatar for 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ón navigate:

      def navigate(steps) do
        {x, y, _} = Enum.reduce(steps, {0, 0, 0}, &Navigator.do_step/2)
        Tuple.take({x, y, _}, 2)
      end
    

    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.

Comments are closed.