Ruby - Operator Parallel Assignment

Introduction

In Ruby, you can do parallel assignment.

This means you can have several variables to the left or an assignment operator and several values to the right.

The values to the right will be assigned, in order, to the variables on the left, like this:

s1, s2, s3 = "A", "B", "C"

You can swap the values of variables by changing their orders on either side of the assignment operator:

i1 = 1
i2 = 2

i1, i2 = i2, i1        #=> i1 is now 2, i2 is 1
puts i1, i2

And you can make multiple assignments from the values returned by a method:

Demo

def returnArray( a, b, c )
    a = "Hello, " + a
    b = "Hi, " + b
    c = "Good day, " + c
    return a, b, c
end# from   ww  w .  j a  v a2  s  .  c  o m
x, y, z = returnArray( "A", "B", "C" )
puts x, y, z

Result

If you specify more variables to the left than there are values on the right of an assignment, any "trailing" variables will be assigned nil:

Demo

def returnArray( a, b, c )
    a = "Hello, " + a
    b = "Hi, " + b
    c = "Good day, " + c
    return a, b, c
end# from  w  w  w .  ja va 2  s  .c  om
x, y, z, extravar = returnArray( "A", "B", "C" ) # extravar = nil
puts x, y, z, extravar

Result

Multiple values returned by a method are put into an array.

When you put an array to the right of a multiple-variable assignment, its individual elements will be assigned to each variable, and once again if too many variables are supplied, the extra ones will be assigned nil:

Demo

s1, s2, s3 = ["Ding", "Dong", "Bell"]
puts s1, s2, s3

Result