返回多个值

但是当你需要一个方法来返回多个值时呢?在其它编程语言中你可以通过传递一个引用(reference)参数(指向原始数据的指针)而不是值参数(数据的副本)来间接实现;当你更改了引用参数的值时,你在没有显式的返回值给调用代码的情况下就修改了原始值。

Ruby 没有对”引用”(by reference)和”值”(by value)进行区分,所以我们无法使用这种技术(大多数时候,尽管我们很快会看到规则的一些例外)。但是,Ruby 能够一次性返回多个值,如下所示:

return_many.rb
  1. def ret_things
  2. greeting = "Hello world"
  3. a = 1
  4. b = 2.0
  5. return a, b, 3, "four", greeting, 6 * 10
  6. end

多个返回值会被放入数组中。如果您要运行 ret_things.class,Ruby 会告诉你返回的对象是一个 Array。

但是,你可以显式的指定一个不同类型的集合,例如 Hash:

  1. def ret_hash
  2. return {'a'=>'hello', 'b'=>'goodbye', 'c'=>'fare thee well'}
  3. end