返回值

在许多编程语言中,一个差异是函数(function)或方法(method)是否会将值返回给调用代码。例如,在 Pascal 中,函数(function)会返回一个值,但例程(procedure)不会。在 Ruby 中没有这样的区别差异。所有方法总是返回一个值,当然,你不一定使用它。

return_vals.rb

如果未指定返回值,则 Ruby 方法返回最后一个计算表达式的结果。思考这个方法:

  1. def method1
  2. a = 1
  3. b = 2
  4. c = a + b # returns 3
  5. end

计算的最后一个表达式是 a + b,它恰好返回 3,因此这是该方法返回的值。有时候你可能不想要返回最后计算的表达式的结果。在这种情况下,你可以使用 return 关键字显式指定返回值:

  1. def method2
  2. a = 1
  3. b = 2
  4. c = a + b
  5. return b # returns 2
  6. end

方法不一定要进行任何赋值操作以提供返回值。一些简单的数据(即,对其自身求值),如果这恰好是方法中计算的最后一个操作,这将作为返回值。如果没有计算任何东西,则返回 nil

  1. def method3
  2. "hello" # returns "hello"
  3. end
  4. def method4
  5. a = 1 + 2
  6. "goodbye" # returns "goodbye"
  7. end
  8. def method5
  9. end # returns nil

我自己的编程习惯是编写尽可能清晰明确的代码。出于这个原因,每当我打算使用方法的返回值时,我更喜欢使用 return 关键字显式指定它;只有当我不打算使用返回值时,我才会省略它。但是,这不是强制性的 - Ruby 给了你选择的权利。