Может ли метод вернуть несколько значений?

И да, и нет.

  def m1
    return 1, 2, 3
  end
  def m2
    return [1, 2, 3]
  end
  p m1   #=> [1, 2, 3]
  p m2   #=> [1, 2, 3]

Таким образом, возвращается только что-то одно, но это может быть сколь угодно сложный объект. В случае с массивами можно использовать множественное (параллельное) присваивание, чтобы достичь эффекта множественных значений, возвращаемых методом:

  def foo
    return 20, 4, 17
  end

  a, b, c = foo
  puts a  #=> 20
  puts b  #=> 4
  puts c  #=> 17

Вход для пользователей