加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 安全地向Array类添加`sum`方法

发布时间:2020-12-17 02:52:46 所属栏目:百科 来源:网络整理
导读:我在我的代码中进行了大量的数组求和,所以我想要修补Array类以包含sum方法(它对数组中的所有元素求和): class Array def sum self.inject{ |s,t| s + t } endend 但是,我以前从来没有在共享代码中修改任何东西,我怀疑这是一个“安全”的事情(例如,也许其他
我在我的代码中进行了大量的数组求和,所以我想要修补Array类以包含sum方法(它对数组中的所有元素求和):

class Array
  def sum
    self.inject{ |s,t| s + t }
  end
end

但是,我以前从来没有在共享代码中修改任何东西,我怀疑这是一个“安全”的事情(例如,也许其他人已经在Array中定义了一个sum方法).

那么能够在我正在编写的代码中对数组求和的最佳方法是什么,而不必编写arr.inject {| s,t | s t}每次?猴子补丁有安全的方法吗?我能以某种方式使用模块吗?或者我应该在某个地方编写一个辅助方法,它接受一个数组并返回总和(即def sum_array(arr); return arr.inject {| s,t | s t}; end)? (或者还有其他一些方法吗?)

解决方法

inject实际上可以带一个符号参数,所以你真正需要编写的是arr.inject(:),我认为它并不需要更短的形式.

http://www.ruby-doc.org/core/classes/Enumerable.html#M001494

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读