Asignación paralela en Ruby

En Ruby , se pueden realizar múltiples asignaciones en una sola operación. Las asignaciones múltiples contienen una expresión que tiene más de un valor l , más de un valor r o ambos. El orden de los valores asignados al lado derecho del operador = debe ser el mismo que el de las variables del lado izquierdo. Las asignaciones se realizan efectivamente en paralelo, por lo que los valores asignados no se ven afectados por la asignación en sí. 

Sintaxis:

lvalue1,... = rvalue2, ...

Parámetros: las variables del lado izquierdo se llaman lvalues ​​y las variables del lado derecho se llaman rvalues.

  • Si una asignación tiene un valor l y más de un valor r, entonces Ruby crea una array para contener los valores r y asigna esa array al valor l.
  • Si una asignación tiene más valores l que valores r, los valores l excedentes se establecen en cero.
  • Si una asignación tiene más valores l y un solo valor r de array, cada valor de array se asigna a un solo valor l de izquierda a derecha.
  • Si el último valor l está precedido por un asterisco ( * también llamado operador splat ), todos los valores r restantes se recopilarán y asignarán a ese valor l como una array.
  • De manera similar, si el último valor r es una array, puede prefijarlo con un asterisco, lo que efectivamente lo expande en sus valores constituyentes en su lugar. (Esto no es necesario si el valor r es lo único en el lado derecho, la array se expandirá automáticamente).

Ejemplo 1:

Ruby

# Ruby program to demonstrate parallel assignment
  
# Same number of lvalues and rvalues
a, b, c = 2, 3, 4
puts "Result 1:"
puts a, b, c
  
# Same as a, b, c = 2, 3, 4
a, b, c = [ 9, 3, 5 ]
puts "Result 2:"
puts a, b, c

Producción:

Result 1:
2
3
4
Result 2:
9
3
5

Ejemplo 2:

Ruby

# Ruby program to demonstrate parallel assignment
  
# One lvalue and multiple rvalues
# rvalues as an array is assigned to lvalue
val = 2, 3, 4
puts "One lvalue and multiple rvalue:"
puts val
  
# Three lvalues and two rvalues
# val3 is set to nil
val1, val2, val3 = 2, 3
puts "Three lvalues and two rvalues:"
puts val1, val2, val3.class

Producción:

One lvalue and multiple rvalue:
2
3
4
Three lvalues and two rvalues:
2
3
NilClass

Ejemplo 3:

Ruby

# Ruby program to demonstrate splat 
# operator with parallel assignment
  
# same as num1, num2 = 1, [2, 3, 4]
num1, *num2 = 1, 2, 3, 4
puts "Result 1:"
puts num2
  
num3 = [ 1, 2, 3, 4 ]
num1, num2 = 15, *num3
puts "Result 2:"
puts num2

Producción:

Result 1:
2
3
4
Result 2:
1

Ejemplo 4:

Ruby

# Ruby program to demonstrate parallel assignment
  
# Return multiple values 
# and assign them in parallel
def modify(x, y, z)
    x = x + 1
    y = y + 2
    z = z + 3
    return x, y, z
end
  
a, b, c = modify(1, 2, 3)
puts a, b, c

Producción:

2
4
6

Publicación traducida automáticamente

Artículo escrito por Ganeshchowdharysadanala y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *