Curso de Raku / Esenciales / Fundamentos de variables y tipos de datos / Variables escalares / Exercises / Intercambiar valores
Solución: Intercambiar valores
En este programa, estamos utilizando los elementos de la sintaxis de Raku de la sección sobre variables escalares.
Código
my ($a, $b) = 10, 20;
($a, $b) = $b, $a;
say "$a, $b";🦋 Puedes encontrar el código fuente en el archivo swap.raku.
Salida
Ejecuta el programa y confirma que imprime los valores en un orden diferente.
$ raku exercises/scalar-variables/swap.raku
20, 10Comentarios
Todos los pasos de este programa (crear una variable y asignar los valores, intercambiarlos y imprimir) usan ambas variables en la misma construcción. Lo más interesante aquí es la forma en que las variables intercambian sus valores:
($a, $b) = $b, $a;Observa que necesitas paréntesis en el lado izquierdo, pero también puedes agregarlos en el lado derecho:
($a, $b) = ($b, $a);¿Qué pasa si omites los paréntesis?
$a, $b = $b, $a;En este caso, obtienes una advertencia de que $a en el
lado derecho no se usa:
$ raku exercises/scalar-variables/swap.raku
WARNINGS for /Users/ash/raku-course/exercises/scalar-variables/swap.raku:
Useless use of $a in sink context (lines 2, 2)
10, 20La línea anterior es en realidad equivalente a una asignación inútil
$b = $b. Puedes verlo fácilmente si modificas los valores
en el lado derecho, por ejemplo:
$a, $b = 2 * $b, 3 * $a;Este programa imprime aún más advertencias, pero también puedes ver
que solo $b cambió su valor:
$ raku exercises/scalar-variables/swap.raku
WARNINGS for /Users/ash/raku-course/exercises/scalar-variables/swap.raku:
Useless use of "*" in expression "3 * $a" in sink context (line 2)
Useless use of $a in sink context (line 2)
10, 40