草庐IT

pair_sum_even_count

全部标签

ruby - 验证 ActiveRecord 时,我得到有效? => false 但 errors.count 中没有错误。怎么来的?

在rspec中创建ActiveRecord时,我使用固定装置来获取有效记录。但是当在测试中使用fxitures时,它们似乎无法通过验证。在以下示例中,该员工似乎完全有效,但规范中的相关验证表明它们无效。classEmployee0Employee.find(745185059).errors.full_messages#=>[]Employee.find(745185059).valid?#=>true例如:describeSessionsControllerdofixtures:users,:employeesdescribe"Logginginbycookie"dodefset_r

ruby - 安全地将 `sum` 方法添加到 Array 类

我在我的代码中做了很多数组求和,所以我正在考虑对Array类进行猴子修补以包含一个sum方法(对数组中的所有元素求和):classArraydefsumself.inject{|s,t|s+t}endend但是,我以前从来没有在共享代码中修补过任何东西,我怀疑这是一个“安全”的事情(例如,也许其他人已经定义了一个sum方法在数组中)。那么,什么是能够在我编写的代码中对数组求和的最佳方法,而无需编写arr.inject{|s,t|s+t}每次?有猴子补丁的安全方法吗?我能以某种方式使用模块吗?或者我应该在某个地方写一个辅助方法,它接受一个数组并返回总和(即defsum_array(arr

ruby-on-rails - 将聚合函数 SUM 与 GROUP BY 一起应用

在ActiveRecord/RubyonRails中执行此查询的最佳方式是什么SELECTsum(amount)作为total_amountFROMpaymentsGROUPBYperson_id,product_id我似乎无法将sum与group方法链接起来。我必须在这里求助于find_by_sql吗? 最佳答案 类似于:Payment.group(:person_id).group(:product_id).sum(:amount)应该给你一个散列,其键是[person_id,product_id]数组,其值是总和。您可能不想:

ruby - Enumerable#sum 如何避免浮点舍入错误?

我在Ruby中玩一些浮点舍入错误的玩具示例,我注意到以下行为让我感到惊讶。首先,一个不足为奇的例子,发生舍入错误的地方:numbers=Array.new(10,0.1)#=>[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]numbers.inject(0,:+)#=>0.9999999999999999现在尝试用Enumerable#sum做同样的事情:numbers.sum#=>1.0我在文档中唯一能找到的暗示解释的是summethodmaynotrespectmethodredefinitionof“+”methodssuchasInteger#

ruby-on-rails - ObjectSpace.count_objects 中每个哈希值的含义是什么?

在ruby​​1.9.3中,我使用ObjectSpace来检查内存问题。ObjectSpace.count_objects返回一个散列,如下所示:{:TOTAL=>1004232,:FREE=>258543,:T_OBJECT=>12519,:T_CLASS=>10318,:T_MODULE=>1330,:T_FLOAT=>2024,:T_STRING=>555422,:T_REGEXP=>3543,:T_ARRAY=>68372,:T_HASH=>5399,:T_STRUCT=>542,:T_BIGNUM=>8105,:T_FILE=>10,:T_DATA=>44277,:T_MAT

ruby-on-rails - rails 3 :How to Sum up Record

我有模型Register,它根据部门和组标记用户的出勤情况。每个用户都有一个部门和组。注册模型date:date,departmentid:string,groupid:integer,one:integer,two:integer在上面的字段中,“一和二”是时间段(比如:从9-14,14-18)。出勤被标记为用户属于当前日期,组ID,部门ID。所以对于同一天会有具有groupid、departmentid和他们的出勤率的多个条目。下面的示例注册表我要找没有。每天关注的用户数。目前我已经尝试过@register=Register.where(:date=>"2012-12-28").s

ruby - 为什么 Ruby array[array.length, count] 返回 []?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:IstheresomekindofunseenArrayterminationinRuby?ArrayslicinginRuby:lookingforexplanationforillogicalbehaviour(takenfromRubykoans.com)a=%w[abc]a[3,1]#=>[]a[4,1]#=>nil谁能解释为什么a[3,1]返回[]?为什么不用nil呢?谢谢。

ruby - 为什么在 Enumerable 模块中定义 Range#sum?

在Ruby2.4和整数范围中,Range(Enumerable)#sum是optimized直接返回结果,无需遍历所有元素。不明白为什么要在enum.c中定义相应的代码对于Enumerable模块而不是range.c对于Range类。为什么Enumerable应该知道包含它的类(例如Range、Hash...)并检查它们的类型而不是让这些类覆盖Enumerable#sum?见于enum.c:returnint_range_sum(beg,end,excl,memo.v);#orhash_sum(obj,&memo); 最佳答案 因为

Ruby 试图掌握一种新的表示法。 (注入(inject)(: ) vs select(&:even?);为什么有&?)

所以,我刚刚了解到,而不是写这样的东西:[1,2,3,4,5].inject{|x,y|x+y}=>15我会写[1,2,3,4,5].inject(:+)=>15我还了解到,而不是写作[1,2,3,4,5].select{|x|x.even?}=>[2,4]我会写[1,2,3,4,5].select(&:even?)=>[2,4]我的问题是为什么一个(选择)使用&而另一个(注入(inject))不使用。我确定:是因为even?和+被处理为符号,但我很想澄清为什么&用于一个以及为什么使用:。此外,我知道我可以在inject和select之外做这些符号。非常感谢!

c++ - std::pair<int, int> 与带有两个 int 的结构

在ACM示例中,我必须为动态编程构建一个大表。我必须在每个单元格中存储两个整数,所以我决定使用std::pair.然而,分配一个巨大的数组需要1.5秒:std::pairtable[1001][1001];后来,我把这段代码改成了structCell{intfirst;intsecond;}Celltable[1001][1001];分配用时0秒。是什么解释了这种巨大的时间差异? 最佳答案 std::pair::pair()构造函数使用默认值(在int的情况下为零)和您的structCell初始化字段没有(因为你只有一个自动生成的默