返回多个值
但是当你需要一个方法来返回多个值时呢?在其它编程语言中你可以通过传递一个引用(reference)参数(指向原始数据的指针)而不是值参数(数据的副本)来间接实现;当你更改了引用参数的值时,你在没有显式的返回值给调用代码的情况下就修改了原始值。
Ruby 没有对”引用”(by reference)和”值”(by value)进行区分,所以我们无法使用这种技术(大多数时候,尽管我们很快会看到规则的一些例外)。但是,Ruby 能够一次性返回多个值,如下所示:
return_many.rb
def ret_things
greeting = "Hello world"
a = 1
b = 2.0
return a, b, 3, "four", greeting, 6 * 10
end
多个返回值会被放入数组中。如果您要运行 ret_things.class
,Ruby 会告诉你返回的对象是一个 Array。
但是,你可以显式的指定一个不同类型的集合,例如 Hash:
def ret_hash
return {'a'=>'hello', 'b'=>'goodbye', 'c'=>'fare thee well'}
end