一种方法的Ruby重构

一种方法的Ruby重构,ruby,refactoring,enumerable,Ruby,Refactoring,Enumerable,我想把它重构成一行: def sum_something sum = 0 self.each { |a| sum += a } return sum end 必须有一种方法来定义块中的“sum”,我可以删除“return”。实际上,好的Ruby风格要求您在这种场景中使用reduce(:+)(inject)的别名(TRPL中提到的别名)。无论TRPL是否是任何类型的权限,都可以选择哪个别名,但请随意引用本书的相应部分,因为我无意阅读它。如果数组为空,则返回nil,而不是0注入(:+,

我想把它重构成一行:

def sum_something
  sum = 0
  self.each { |a| sum += a }
  return sum
end

必须有一种方法来定义块中的“sum”,我可以删除“return”。

实际上,好的Ruby风格要求您在这种场景中使用
reduce(:+)
inject
)的别名(TRPL中提到的别名)。无论TRPL是否是任何类型的权限,都可以选择哪个别名,但请随意引用本书的相应部分,因为我无意阅读它。如果数组为空,则返回nil,而不是0<代码>注入(:+,0)将是完全匹配的。@安德鲁:是的,折叠需要正在执行的操作的标识元素(添加:0)。不过,争论的方向正好相反。实际上,好的Ruby风格要求您在此类场景中使用
reduce(:+)
(用于
inject
)的别名(TRPL中提到的别名)。无论TRPL是否是关于选择别名的任何权威,都是有争议的,但请随意引用本书的相应部分,因为我无意读取它。如果数组为空,则返回nil,而不是0<代码>注入(:+,0)将是完全匹配的。@安德鲁:是的,折叠需要正在执行的操作的标识元素(添加:0)。然而,争论却恰恰相反。
def sum_something
  inject(0, :+)
end