How does Ruby return two values?

Unlike other languages, the return value of any method call in Ruby is always an object. This is possible because, like everything in Ruby, nil itself is an object.

There’s three basic patterns you’ll see. Returning no particular value:

def nothing
end

nothing
# => nil

Returning a singular value:

def single
  1
end

x = single
# => 1

This is in line with what you’d expect from other programming languages.

Things get a bit different when dealing with multiple return values. These need to be specified explicitly:

def multiple
  return 1, 2
end

x = multiple
# => [ 1, 2 ]
x
# => [ 1, 2 ]

When making a call that returns multiple values, you can break them out into independent variables:

x, y = multiple
# => [ 1, 2 ]
x
# => 1
y
# => 2

This strategy also works for the sorts of substitution you’re talking about:

a, b = 1, 2
# => [1, 2]
a, b = b, a
# => [2, 1]
a
# => 2
b
# => 1

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)