【问题标题】:define sum function in Ruby在 Ruby 中定义 sum 函数
【发布时间】:2013-06-06 08:31:46
【问题描述】:

请帮忙,我是一名 Ruby 学生,我知道如何使用 .sum 方法,但不是这个: 如何为数组定义求和函数,以便提供任何元素都会导致它们的总和。格式应为 sum([array inputs]) 返回数组元素的总和。例如:sum([ ]) 应该返回 0,sum([1,2,3]) 返回 6(#again,而不是 [1,2,3].sum)。我被困在盒子里了,非常感谢你的帮助。

【问题讨论】:

  • 寻找Array#sum的出处:)
  • 你知道什么sum方法?你是在说 Rails 吗?

标签: ruby arrays numbers sum function


【解决方案1】:

使用Enumerable#inject的解决方案:

def sum(array)
  array.inject(0){|sum, el| sum + el}
end

或者,如建议的那样,更短更优雅的形式:

def sum(array)
  array.inject(0, :+)
end

【讨论】:

  • 哇...你太棒了,它就像一个魅力。非常感谢。
  • array.sum -- 查看 NikDP 的回答
【解决方案2】:

使用数组求和法。

arr = [1,2,3]
arr.sum


def sum(arr)
  arr.sum
end

【讨论】:

    【解决方案3】:

    这样就可以了:

    def sum(array)
      array.reduce(0, :+)
    end
    

    【讨论】:

    • 其实你不需要0。你可以做array.reduce(:+)
    • @sawa [].reduce(:+) # => nil
    【解决方案4】:
    def sum(arr)
     sum = 0
     arr.each{|element| sum=sum+element }
     return sum
    end
    

    【讨论】:

    • 虽然这行得通,但在 Ruby 中,如此迫切的做事方式并不是惯用的(return 绝对不是惯用的)。
    • 非常感谢,这是我的水平:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2021-02-16
    • 2017-08-12
    • 1970-01-01
    相关资源
    最近更新 更多