Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

240
Vistas
¿Por qué este método devuelve tres valores?

Tengo el siguiente programa Ruby:

 def swap (a,b) return a,b = b,a end puts swap(5,3)

Esperaba la salida.

 3 5

Pero lo entiendo.

 5 3 5

¿Cual es la razón?

¡Gracias!

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

¿Por qué este método devuelve tres valores?

Debido a la declaración de return , Ruby intenta interpretar el lado derecho como una matriz y su código:

 return a,b = b,a

se evalúa como: (se agregan paréntesis para mayor claridad)

 return [a, (b=b), a]

es decir, una matriz de 3 elementos [a, b, a] (asignar b a sí mismo no hace nada)

over 4 years ago · Santiago Trujillo Denunciar

0

Elimina la palabra clave return . En realidad está haciendo: return a, (b), a. donde (b = b)

 def swap(a,b) a, b = b, a end puts swap(5,3)

Producción

 => 3, 5
over 4 years ago · Santiago Trujillo Denunciar

0

En su programa: en la función de intercambio, el retorno que ha dado es return a,b = b,a eliminar a,b y escribir directamente return b,a . obtendrá el resultado esperado. Motivo: a return a,b = b,a es devolver primero el valor de a luego ejecutar b=b,a . Espero que esto pueda ayudarte

 def swap (a,b) return b,a end puts swap(5,3)

Producción

 3 5
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda